ale*_*der 8 ubuntu dhcp systemd dyndns systemd-networkd
我在 ubuntu 18.04 服务器上。我需要运行一个更新 CloudFlare 上的 IP 地址的脚本(一种 DynDNS 脚本)。在以前的版本中,我可以使用接口 enp1s0 的 DHCLIENT 退出挂钩来执行此操作。
\n\n但是,systemd 现在使用自己的内置 DHCP 客户端。如何编写一个 systemd 单元,在向 DCHP 客户端提供新 IP 地址后立即执行 bash 脚本?
\n\nSystemd 正在管理接口 enp1s0:
\n\n#sudo systemctl status systemd-networkd\n\xe2\x97\x8f systemd-networkd.service - Network Service\n Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled-runtime; vendor preset: enabled)\n Active: active (running) since Tue 2018-09-18 01:54:16 +08; 10h ago\n Docs: man:systemd-networkd.service(8)\n Main PID: 878 (systemd-network)\n Status: "Processing requests..."\n Tasks: 1 (limit: 4915)\n CGroup: /system.slice/systemd-networkd.service\n \xe2\x94\x94\xe2\x94\x80878 /lib/systemd/systemd-networkd\n\nSep 18 01:54:27 xxx systemd-networkd[878]: enp1s0: Configured\n
Run Code Online (Sandbox Code Playgroud)\n
我不知道有任何 systemd 解决方案,但您可以有效地监视接口的更改,并将ip monitor
输出通过管道传输到脚本中,以查找您感兴趣的更改。例如,如果我这样做
$ ip monitor address dev enp3s0
Run Code Online (Sandbox Code Playgroud)
然后添加一个新的别名地址到接口 enp3s0 我得到了这一行
2: enp3s0 inet 192.168.77.77/24 brd 192.168.77.255 scope global enp3s0:1
valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
我想您会看到类似的 dhcp 更改。
如果您愿意,可以编写一个 C 程序来执行相同的操作,请参阅此ipevent.c。
归档时间: |
|
查看次数: |
15381 次 |
最近记录: |