Rma*_*ano 15 scripts networking dhcp
在标记为重复之前:这与动态 DNS 或类似的东西无关。
我知道每次网络上升时如何运行脚本;在目录中添加一个脚本是一件简单的事情,/etc/NetworkManager/dispatcher.d
如下所示:
#!/bin/bash
IF=$1
STATUS=$2
case "$2" in
up)
logger -s "NM Script up $IF triggered"
su rmano -c /home/romano/bin/myscript
;;
down)
logger -s "NM Script down $IF triggered"
;;
*)
;;
esac
Run Code Online (Sandbox Code Playgroud)
就我而言,这myscript
是一个非常简单的例子ifconfig -a > ~/Dropbox/myifconfig.txt
——我使用它是因为我需要从大学的任何地方知道我的本地 IP,而且它会经常改变。
到目前为止一切顺利,系统运行正常。但不幸的是,这里的 DHCP 配置为有时会更改 IP,而不会关闭/打开接口。在这种情况下,脚本(逻辑上)不会运行,并且文件不会更新。
我无法使用 DynDNS 方法,因为更改发生在本地IP 中,而不是外部可见的 IP。
我可以轮询,只需将脚本放在 cron 中并每分钟执行一次,或者编写一个稍微复杂的脚本(...如果 IP 更改,则写入文件,否则什么都不做)并将其作为后台任务再次放置,但它不优雅。所以问题是:
当我的本地 IP 更改时,有什么方法可以触发脚本吗?
更新 1
我试图/etc/dhcp/dhclient-enter-hooks.d/
根据现有的将脚本放入 中/etc/dhcp/dhclient-enter-hooks.d/resolvconf
,但它不会被触发。我怀疑(需要确认)NM(网络管理器)正在自己进行dhcp协商,而没有调用dhcp命令......
小智 11
根据 NetmorkManager 的手册页,其中一个事件是
dhcp4-change
The DHCPv4 lease has changed (renewed, rebound, etc).
Run Code Online (Sandbox Code Playgroud)
我认为你可以简单地改变
up)
Run Code Online (Sandbox Code Playgroud)
到
dhcp4-change|up)
Run Code Online (Sandbox Code Playgroud)