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