私网Openwrt定时执行远程命令
一台Openwrt无线路由器,PPPOE拨号,拨号成功后有时分配的是私有地址,有时分配的是公网地址
一、实现Openwrt定时执行远程命令
在公网的网站上建立一个cmd.sh文件,里面有需要openwrt执行的命令,如reboot或重新拨号命令
openwrt定时获取网站上的cmd.sh文件,并执行
在openwrt的root目录下建立mycmd.sh文件,内容如下:
# 这里的-f参数判断文件是否存在
if [ -f "cmd.sh" ]; then
rm cmd.sh
fi
info=`wget http://xxxx.net/cmd.sh`
if [ -f "cmd.sh" ]; then
chmod 777 cmd.sh
./cmd.sh
fi
xxxx.net为网站地址。修改mycmd.sh文件为可执行
将mycmd.sh加入定时执行任务:crontab -e
0 */2 * * * /root/mycmd.sh
两小时执行一次,定时从网站获取cmd.sh文件并执行
二、自动重新拨号获取公网地址
修改网站上的cmd.sh内容:
for var in $(seq 1 10) ; do
echo $var
info=` ifconfig pppoe-wan |grep 'inet add'|awk -F ":" '{print $2}'|awk '{print $1}'`
echo "IP:${info}"
bb=`echo $info |grep '59.'|wc -l`
if [ $bb = 0 ]
then
ifup wan
sleep 60
else
break
fi
done
59.为公网地址,其他开头的如10.为私网地址,首先获取PPPOE地址,存入变量info,然后判断ip地址是否是59.开头的公网地址,如果不是则重新拨号(ifup wan ),尝试10次,如还不能获取公网地址则放弃。
发表评论