Сценарии Ubuntu 11.10 dhclient-enter-hook.d не запускаются

У меня установлен ящик с Ubuntu 11.10. И коробка была настроена на получение IP и имени хоста от dhcp.

Мы установили скрипты в папке /etc/dhcp/dhclient-enter-hooks.d/. Но эти сценарии не были вызваны / выполнены. У меня есть похожие сценарии в другом окне, в котором установлена ​​Ubuntu 10.04, и сценарии ловушек выполняются без проблем. Единственное отличие состоит в том, что в окне 11.10 установлен NetworkManager.

# ps -ef | grep dhclient
root       746   695  0 03:52 ?        00:00:00 /sbin/dhclient -d -4 -sf /usr/lib/NetworkManager/nm-dhcp-client.action -pf /var/run/dhclient-eth0.pid -lf /var/lib/dhcp/dhclient-559273da-a027-458e-b124-bdbb4976ee17-eth0.lease -cf /var/run/nm-dhclient-eth0.conf eth0

Как я проверил, что скрипт в /etc/dhcp/dhclient-enter-hooks.d не работает? Я поместил простой скрипт «mytest», который имеет следующий код в /etc/dhcp/dhclient-enter-hooks.d. Файл /tmp/enter-hook.out никогда не создавался.

#!/bin/sh
echo "this is test file to test dhclient-enter-hook" > /tmp/enter-hook.out

Отрывок моего / etc / network / interfaces

# cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0 inet dhcp
1
задан 17 May 2012 в 17:40

2 ответа

Поскольку этот вопрос на самом деле не является вопросом, я предполагаю, что вопрос заключается в том, «как я могу запустить hhlient- {enter, exit} -hocks?» Короткий ответ: без работы не обойтись. См. этот баг для хорошего обсуждения проблемы и некоторых решений.

Как предполагает OP, сетевой менеджер (NM) является проблемой. Вот пример вызова dhclient NM:

/sbin/dhclient -d -4 -sf /usr/lib/NetworkManager/nm-dhcp-client.action \
    -pf /var/run/dhclient-wlan1.pid -lf <lease file> \
    -cf /var/run/nm-dhclient-wlan1.conf wlan1

Обратите внимание на «-sf /usr/lib/NetworkManager/nm-dhcp-client.action». Это специальная программа, предоставляемая NM, которая переопределяет скрипт по умолчанию для dhclient, который находится в / sbin / dhclient-script. Сценарий по умолчанию ведет себя так, как вы ожидаете, и задокументирован в «man dhclient-script».

nm-dhcp-client.action - это программа на C, поэтому вам потребуется источник, чтобы выяснить, что он делает. Но, взглянув на исходный код, вы заметите, что он не запускает ни один из сценариев входа / выхода по умолчанию.

Вероятно, лучшим (наименее хакерским) решением является написание сценария /etc/NetworkManager/dispatcher.d, который запускает сценарии ввода / вывода при запуске интерфейса и , если существуют переменные среды DHCP *. (см. человек NetworkManager). Поскольку вы можете передавать только те переменные, которые NM предоставляет диспетчерскому сценарию, это может быть не полностью прозрачным решением.

Непроверенной, хакерской, но более простой альтернативой было бы переименовать /usr/lib/NetworkManager/nm-dhcp-client.action и поместить на его место скрипт, который безусловно выполняет exec в недавно названном nm-dhcp-client.action , Вы можете в значительной степени скопировать большую часть / sbin / dhclient-script, которая запускает хуки ввода / выхода, поэтому создание сценария должно быть довольно простым. Это должно работать с уже существующими сценариями ловушек, тогда как прежнее решение может не работать (из-за недоступности ожидаемых переменных).

NM на самом деле уже должен запускать хуки, потому что кажется, что некоторые пакеты не функционируют так, как ожидалось, без него.

0
ответ дан 17 May 2012 в 17:40

только что натолкнулся на то, что кажется не связанным решением проблемы - наличие интерфейса, не должным образом объявленного в /etc/network/interfaces, имело значение. ни один из скриптов-ловушек не был вызван, и я собирался приступить к обходному решению с использованием NetworkManager: убедитесь, что что-то подобное было в /etc/network/interfaces

# interfaces(5) file used by ifup(8) and ifdown(8)
# these two lines are here by default
auto lo
iface lo inet loopback

# this was missing in my case and while the address was retrieved via DHCP, additional 
# options like ntp-servers were never retrieved:
auto eth0
iface eth0 inet dhcp
0
ответ дан 17 May 2012 в 17:40

Другие вопросы по тегам:

Похожие вопросы: