Я могу получить имя хоста и 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 ответа2

0

Я искал около 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

Я надеюсь, что это будет полезно для тех, кто столкнулся с той же проблемой.

0

Скрипт dhclient перехватывает часто без шебанга в первой строке, но это нужно для перехватчиков NM /etc/NetworkManager/dispatcher.d/xxxx.sh:

#!/bin/bash
if [ "$2" = "hostname" ]; then
  ......
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .