Я могу получить имя хоста и IP-адрес от DHCP-сервера, вызвав скрипт в /etc/dhcp/dhclient-exit-hooks.d/
как описано здесь на стороне клиента. Но остановился после того, как установил сетевой менеджер. Я понимаю, что сетевой менеджер не вызывает скрипты в /etc/dhcp/dhclient-exit-hooks.d/
. После некоторых исследований я обнаружил, что могу запустить скрипт в /etc/NetworkManager/dispatcher.d/
. Я попробовал это (переместил файл, затем дал разрешения), но это не сработало. Потому что я не могу получить доступ к таким переменным, как $reason, $interface etc.
этом каталоге. Я застрял здесь. Так есть ли способ получить имя хоста с DHCP-сервера через сетевой менеджер? или как запустить скрипт в каталоге dhclient-exit-hooks.d
при загрузке, даже если сетевой менеджер работает?
2 ответа
Я искал около 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
Я надеюсь, что это будет полезно для тех, кто столкнулся с той же проблемой.
Скрипт dhclient перехватывает часто без шебанга в первой строке, но это нужно для перехватчиков NM /etc/NetworkManager/dispatcher.d/xxxx.sh:
#!/bin/bash
if [ "$2" = "hostname" ]; then
......
fi