我有一个动态 DNS 脚本如下:
#!/bin/bash
curl -kL# "http://example.com/updatedns.php"
echo $? >> /var/log/ddns
...保存到 /usr/local/bin/ddns。显然上面的 URL 不是我实际使用的 URL,但该 URL 旨在将我的域的 A 记录设置为请求它的机器的 IP。我已确认它已被 chmodded 并从命令行运行,但是,Upstart 已使用以下脚本进行设置:
start on network started
exec /usr/local/bin/ddns
...在网络启动时不执行它(我假设是在机器启动时或我连接网线时)。
我在网络上搜索开始并发现一些结果表明此节实际上没有正确启动,但仍被触发,但我不确定这是否相关。我做错了什么吗?我正在运行 Ubuntu Server 11.10。
答案1
传统(新兴之前,并且仍然有效)的方法是将脚本放在/etc/network/if-up.d
目录中。
请注意,Ubuntu 已预先打包了 DynDNS 更新脚本:我可以看到dyndns
、ddclient
、inadyn
、ez-ipupdate
和ipcheck
已打包在 Ubuntu 中。全部都可以使用 :)
答案2
grep 'emit' /etc/network/if-up.d/upstart -a5
建议您应该使用start on net-device-up
。
如果您有多个 det 设备(并且都没有网关),您可以在末尾添加一个参数,如下所示:
start on net-device-up IFACE=eth0