openwrtd脚本方式实现DDNS

烂漫一生 提交于 2020-01-18 23:54:13

首先 我们需要在 /ect/hotplug.d/iface/ 下建立一个文件 25-Oray 在文件内写入如下代码

#!/bin/sh -
USER="UserName"
PASS="Password"
DOMAIN="domin.vicp.net"
URL="http://${USER}:${PASS}@ddns.oray.com:80/ph/update?hostname=${DOMAIN}"

if [ -f /tmp/ddns ]; then
    current_ip=$(uci -P /var/state get network.wan.ipaddr)
    req=`cat /tmp/ddns| grep "${current_ip}"`
    if [ ! -z "${req}" ]; then
        old_ip=`echo ${req}| awk '{ print $2}'`
        if [ "${old_ip}" = "${current_ip}" ]; then
            exit
        fi
    fi
fi

wget -q -O /tmp/ddns -q ${URL} 

然后退出 并且赋予此文件可执行权限

chmod a+x /etc/hotplug.d/iface/25-Oray

再编辑 vi etc/crontabs/root 文档 添加

*/1 * * * * /etc/hotplug.d/iface/25-Oray start

再重新启动路由器的定时任务服务

/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

多个域名的处理
因为一个花生壳用户可以管理多个域名,如果想在这个路由器上绑定多个域名,有两个方法

  1. 按前述步骤制作多份脚本,命名为不同的名字,并添加到循环执行中去

  2. 修改脚本,主要修改涉及 DOMAIN 值的地方,比如修改为 DOMAIN1 DOMAIN2DOMAINN
    ,对应产生 URL1 URL2URLN,然后后面 wget语句处改为多个:

    wget -q -O /tmp/oray -q ${URL1}
    wget -q -O /tmp/oray -q ${URL2}
     ...
    wget -q -O /tmp/oray -q ${URLN}
    

这样就可以了 然后任务会 每隔1分钟执行一次 如果想延长时间可以更具需求修改数据即可.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!