如何通过网络管理器从 DHCP 服务器获取主机名?

如何通过网络管理器从 DHCP 服务器获取主机名?

我可以通过调用目录下的脚本从 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

相关内容