MyDNSの自動更新スクリプト

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の末のものなので余分なものが混じっているから。といってももっとすっきりしたものにならないものか。