reroさんのところにも書いたが、あそこに書いたのは出力をしぼった最終簡易版。本来使っているのは、試行錯誤のあとを残した次のスクリプト;
#!/bin/sh if Limit "$0" 4 ; then exit 1 fi MY_INAME="hogehoge.mydns.jp" MY_ID="mydns00000" MY_PASS="hogehoge" IFCONFIG="/sbin/ifconfig" NSLOOKUP="nslookup" TEMP_PATH="/tmp" IP_NOW=`${IFCONFIG} |grep P-t-P|cut -d: -f2 |cut -d" " -f1` #IP_NOW=`${IFCONFIG} ${I_DEVICE}|grep "inet addr"|cut -c 21-36|cut -f 1 -d " "` IP_OLD=`${NSLOOKUP} ${MY_INAME}|tail -2|grep Add|cut -d" " -f2` #IP_OLD=`${NSLOOKUP} ${MY_INAME}|tail -2|grep Add|cut -c 9-24` #echo ${IP_NOW} echo `${IFCONFIG} |grep P-t-P|cut -d: -f2 |cut -d" " -f1` #echo ${IP_OLD} echo `${NSLOOKUP} ${MY_INAME}|tail -2|grep Add|cut -d" " -f2` if [ "${IP_NOW}" = "${IP_OLD}" ]; then echo "OK" else echo ${IP_NOW} echo ${IP_OLD} cd ${TEMP_PATH} wget -nv http://${MY_ID}:${MY_PASS}@www.mydns.jp/login.html rm login.html sleep 5m fi
これをcronで動かすときは次のようにしている;
*/7 * * * * ~masahase/bin/ddns.sh 1>/dev/null 2>&1
ちなみに頭の方で呼び出してるLimitは次のスクリプト;
#!/bin/sh if [ $# -eq 0 ]; then echo "Usage: Limit APPNAME [MAXNUM]" echo "Default MAXNUM is 10." else if [ $# -eq 1 ]; then AppName=$1 MaxNum=10 else AppName=$1 MaxNum=$2 fi cn=`ps ax|grep -v grep|grep -v $0|grep -c $AppName` if [ $cn -ge $MaxNum ]; then exit 0 else exit 1 fi fi
やってることは単純なんだけどやたらスクリプトが長いのは単にTry&Errorの末のものなので余分なものが混じっているから。といってももっとすっきりしたものにならないものか。