轉載:https://www.cnblogs.com/xdsnet/p/5196001.html
OpenWrt作為常見路由器系統,提供了較強的sh環境,這使得其可以很好的利用花生殼提供的網頁版實現公網環境下的動態域名解析支持。
sh腳本(文件名:OpenWrtForOray)
#!/bin/sh - # filename:OpenWrtForOray # USER值為花生殼用戶名 USER="nameid" # PASS值為花生殼對應登錄密碼 PASS="password" # DOMAIN值為該用戶下可使用的域名 DOMAIN="hostname.vicp.cc" # IPPORT值是在OpenWrt上配置的可獲取公網IP地址的網口,家用一般是 pppoe-wan IPPORT="pppoe-wan" # 下面的代碼獲取到實際的公網 IP 地址 IP=$(ifconfig ${IPPORT} |awk -F "[: ]+" '/inet addr/{print $4}') # 下面生成完整的花生殼網頁版調用URL地址 URL="http://${USER}:${PASS}@ddns.oray.com:80/ph/update?hostname=${DOMAIN}&myip=${IP}" # 下面的代碼檢測是否發生IP地址變化,如果沒有變化就不產生實際調用 if [ -f /tmp/oray ];then OLD_IP=$(cat /tmp/oray | awk '{print $2}') if [ "${OLD_IP}" = "${IP}" ];then exit fi fi wget -q -O /tmp/oray -q ${URL}
腳本的放置與處理
把腳本放置到 /etc/hotplug.d/iface/ 目錄下,執行
chmod a+x /etc/hotplug.d/iface/OpenWrtForOray
再編輯 /etc/crontabs/root文檔,添加重復執行的命令,比如可以執行下面的命令:
echo */1 * * * * /etc/hotplug.d/iface/OpenWrtForOray start >> /etc/crontabs/root
再重新啟動路由器的定時任務服務
/etc/init.d/cron restart
正確的話可通過命令
ps | grep cron
查看cron是否啟動成功,一般顯示為:
2999 root 1508 S /usr/sbin/crond -c /etc/crontabs -l 6
3000 root 1495 S grep cront
多個域名的處理
因為一個花生殼用戶可以管理多個域名,如果想在這個路由器上綁定多個域名,有兩個方法
-
按前述步驟制作多份腳本,命名為不同的名字,並添加到循環執行中去
-
修改腳本,主要修改涉及
DOMAIN值的地方,比如修改為DOMAIN1DOMAIN2...DOMAINN,對應產生URL1URL2...URLN,然后后面wget語句處改為多個:
wget -q -O /tmp/oray -q ${URL1} wget -q -O /tmp/oray -q ${URL2} ... wget -q -O /tmp/oray -q ${URLN}
即可。
