2005年1月21日

[PDA] Zaurus C760 新手筆記 (17) - Timer Sync

用 opie-sh 寫了個小工具:"Timer Sync",用來將 Zaurus 的時間與 ntp server (ntp: Network Time Protocol) 的標準時間同步。

這一張是執行時的畫面,簡單的文字畫面而已:



如果點選 "Sync",同步後的回應:



如果點選 "Config",會有個下拉式選單,可以改變預設的 ntp server:



發現 opie-sh 算是個彈性很大,又很容易上手的工具。晚點把程式碼補上。
#/bin/bash

create_background () {
  echo "<h1>$PROGNAME</h1>
    <ul><li>Sync:<br>
    &nbsp; sync the timer of Zaurus with the ntp server
    <br></li>
    <li>Config:<br>
    &nbsp; change the default ntp server
    <br></li>
    <li>Cancel:<br>
    &nbsp; quit
    <br></li></ul>"   | opie-sh -t "$PROGNAME" -f &
  SCREENCLEAN=$!
  sleep 2
}

clean_background () {
  kill $SCREENCLEAN
}

PROGNAME="Timer Sync"
NTPLST="ntp-servers.lst"

DIRNAME="`dirname $0`"
CURPATH="`pwd`"

cd "$DIRNAME"
create_background

BREAK=0
while [ $BREAK -eq 0 ]; do

  opie-sh -m -g -t "$PROGNAME" -M "<p>Timer Sync</p>"     -0 "Sync " -1 "Config" -2 "Cancel"

  case $? in
  0)
    RESULT="`ntpdate "\`head -1 $NTPLST\`" 2>&1`"
    if [ $? -eq 0 ]; then
      BREAK=1
    fi

    RESULT="`echo "$RESULT"       | sed -e "s/^/<p>/g" -e "s/$/<br><\/p>/g"`"
    opie-sh -m -g -t "Response from NTP Server" -M "$RESULT"
    ;;
  1)
    RESULT="`opie-sh -i -l -g       -t "Select the Default NTP Server"       -L "NTP Server: "       -F "$NTPLST"`"
    if [ $? -ne 255 ]; then
      RESULT="$RESULT\n`egrep -v -e "$RESULT" "$NTPLST"`"
      echo -e "$RESULT" > "$NTPLST"
    fi
    ;;
  *)
    BREAK=1
  esac
done

clean_background
cd "$CURPATH"
其中的 $NTPLST (檔案 ntp-servers.lst),內容是 ntp 伺服器的列表,置於與上列 script 同一目錄下即可。我用的是下列這些:
time.nist.gov
time.stdtime.gov.tw
freq_f.stdtime.gov.tw
time.chttl.com.tw
clock.stdtime.gov.tw
time.windows.com
tick.stdtime.gov.tw



沒有留言: