![如何通过网络管理器从 DHCP 服务器获取主机名?](https://linux22.com/image/1399752/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E7%BD%91%E7%BB%9C%E7%AE%A1%E7%90%86%E5%99%A8%E4%BB%8E%20DHCP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%8E%B7%E5%8F%96%E4%B8%BB%E6%9C%BA%E5%90%8D%EF%BC%9F.png)
我可以通过调用目录下的脚本从 DHCP 服务器获取主机名和 IP 地址,/etc/dhcp/dhclient-exit-hooks.d/
如所述这里在客户端。但是它在安装网络管理器后停止了。我意识到网络管理器不会调用/etc/dhcp/dhclient-exit-hooks.d/
目录下的脚本。经过一番研究,我发现我可以在目录下运行脚本/etc/NetworkManager/dispatcher.d/
。我试过了(移动文件,然后授予权限)但没有用。因为我无法访问$reason, $interface etc.
该目录下的变量。我被困在这里了。那么有没有办法通过网络管理器从 dhcp 服务器获取主机名?或者如何在网络管理器运行时在启动时运行目录下的脚本dhclient-exit-hooks.d
?
答案1
我花了大约 8 天的时间寻找解决方案,但一无所获。我开发了自己的方法。这不是最好的方法,但它有效。
第一步:Ubuntu 总是显示“正在等待网络配置...”,并等待 2 分钟才能通过。我更改了两行failsafe.conf
并禁用了“睡眠”功能来解决这个问题。
* sudo nano /etc/init/failsafe.conf
...
$PLYMOUTH message –text=”Waiting for network configuration…”
#sleep 40
$PLYMOUTH message –text=”Waiting up to 60 more seconds for network…”
#sleep 59
...
第二步:关闭休眠功能后网络失效,我改成登录前先rc.local
运行/etc/init.d/networking restart
正确配置网络。
* sudo nano /etc/init/rc.local
/etc/init.d/networking restart
exit 0
我希望它对遇到同样问题的人有用。
答案2
dhclient 钩子脚本通常在第一行没有 shebang,但 NM 钩子需要它。/etc/NetworkManager/dispatcher.d/xxxx.sh:
#!/bin/bash
if [ "$2" = "hostname" ]; then
......
fi