How to Update DDNS in merlin firmware

Abstract

This article show:

  1. How to add crontab command in merlin firmware

  2. How crontab works

  3. how to updata ddns

How to add crontab command in merlin firmware

由于梅林固件重启以后root文件路径下所有东西都不会保存,因此你添加的脚本必须放在/jffs这个目录下,这个是闪存的文件系统。

我们在/jffs/scripts这个目录下添加services-start脚本,这个脚本会在每次开机的时候执行,在这个脚本里面添加,添加crontab的内容就行。注意一定要给这个脚本添加执行权限。

chmod a+rx /jffs/scripts/*

脚本的内容如下:

#!/bin/sh
cru a UpdateDDNS "*/10 * * * * curl http://freedns.afraid.org/dynamic/update.php?xxxxxxxxxxxxxxxx"

这是每隔5分运行一次的意思。

注意,这里有有个gotcha,这个脚本应该是路由器启动好以后,所有服务都正常了开始运行的。但是我添加了以后一直没有办法正常运行,他就是不运行,网上有好多人都说了个种办法,都比较弱智,我怎么会反那么低级的找错误。我这个脚本能手动是可以运行的。后来我查拉一下,原来是有个选项,要在web gui中打开,如下图,这个选项是最近几个版本才加入的:

How crontab works

这个图说的很清楚了, 例如

00 *   * * *  #每隔一小时执行一次
00 */1 * * *  #与上面是相同的任务

上面是整点执行的意思

0 */3 * * * #每3的整数倍小时执行一次写法,例如3,6,9点
* * * * * #每分钟执行你一次
00 3 * * * #每天3点执行一次
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 

上面的例子表示每月1、10、22日的4 : 45重启apache。

how to updata ddns

你去http://freedns.afraid.org 申请一个域名就可以了,剩下的网站上有提示。

不过最近freedns.afraid.org上的域名基本都被污染了没有办法正常的解析,因此我们换一个服务商: freemyip,更新方式是基本一样的

参考文献

  1. https://koolshare.cn/thread-43219-1-1.html

  2. https://bugxia.com/946.html

  3. https://blog.csdn.net/liu0808/article/details/80668705

  4. https://www.jb51.net/LINUXjishu/19905.html

  5. https://github.com/RMerl/asuswrt-merlin/wiki/User-scripts


本文章使用limfx的vsocde插件快速发布