У меня установлен ящик с установленным 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
Snip из моего / etc / network / interfaces
# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0 inet dhcp
просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /etc/network/interfaces
, сделал разницу. ни один из скриптов hook-scripts не был вызван, и я собирался приступить к обходному пути с использованием 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
Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить dhclient- {enter, exit} -hooks?» Короткий ответ: вы не можете без какой-либо работы. См. эту ошибку для хорошего обсуждения проблемы и некоторых решений.
Как было предложено 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 * (см. man NetworkManager). Поскольку вы можете передавать только переменные, которые NM дает сценарий диспетчера, это может быть не полностью прозрачное решение.
Непроверенная, взломанная, но более простая альтернатива - переименование / usr / lib / NetworkManager / nm- dhcp-client.action и поставил вместо него сценарий, который безоговорочно выполняет exec во вновь названном nm-dhcp-client.action. Вы могли бы в значительной степени скопировать большую часть / sbin / dhclient-script, которая запускает крючки ввода / выхода, поэтому создание сценария должно быть довольно простым. Это должно работать с ранее существовавшими скриптами hook, тогда как первое решение может не быть (из-за недоступности ожидаемых переменных).
NM действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.
просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /etc/network/interfaces
, сделал разницу. ни один из скриптов hook-scripts не был вызван, и я собирался приступить к обходному пути с использованием 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
просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /etc/network/interfaces
, сделал разницу. ни один из скриптов hook-scripts не был вызван, и я собирался приступить к обходному пути с использованием 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
Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить dhclient- {enter, exit} -hooks?» Короткий ответ: вы не можете без какой-либо работы. См. эту ошибку для хорошего обсуждения проблемы и некоторых решений.
Как было предложено 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 * (см. man NetworkManager). Поскольку вы можете передавать только переменные, которые NM дает сценарий диспетчера, это может быть не полностью прозрачное решение.
Непроверенная, взломанная, но более простая альтернатива - переименование / usr / lib / NetworkManager / nm- dhcp-client.action и поставил вместо него сценарий, который безоговорочно выполняет exec во вновь названном nm-dhcp-client.action. Вы могли бы в значительной степени скопировать большую часть / sbin / dhclient-script, которая запускает крючки ввода / выхода, поэтому создание сценария должно быть довольно простым. Это должно работать с ранее существовавшими скриптами hook, тогда как первое решение может не быть (из-за недоступности ожидаемых переменных).
NM действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.
просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /etc/network/interfaces
, сделал разницу. ни один из скриптов hook-scripts не был вызван, и я собирался приступить к обходному пути с использованием 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
Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить dhclient- {enter, exit} -hooks?» Короткий ответ: вы не можете без какой-либо работы. См. эту ошибку для хорошего обсуждения проблемы и некоторых решений.
Как было предложено 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 * (см. man NetworkManager). Поскольку вы можете передавать только переменные, которые NM дает сценарий диспетчера, это может быть не полностью прозрачное решение.
Непроверенная, взломанная, но более простая альтернатива - переименование / usr / lib / NetworkManager / nm- dhcp-client.action и поставил вместо него сценарий, который безоговорочно выполняет exec во вновь названном nm-dhcp-client.action. Вы могли бы в значительной степени скопировать большую часть / sbin / dhclient-script, которая запускает крючки ввода / выхода, поэтому создание сценария должно быть довольно простым. Это должно работать с ранее существовавшими скриптами hook, тогда как первое решение может не быть (из-за недоступности ожидаемых переменных).
NM действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.
Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить dhclient- {enter, exit} -hooks?» Короткий ответ: вы не можете без какой-либо работы. См. эту ошибку для хорошего обсуждения проблемы и некоторых решений.
Как было предложено 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 * (см. man NetworkManager). Поскольку вы можете передавать только переменные, которые NM дает сценарий диспетчера, это может быть не полностью прозрачное решение.
Непроверенная, взломанная, но более простая альтернатива - переименование / usr / lib / NetworkManager / nm- dhcp-client.action и поставил вместо него сценарий, который безоговорочно выполняет exec во вновь названном nm-dhcp-client.action. Вы могли бы в значительной степени скопировать большую часть / sbin / dhclient-script, которая запускает крючки ввода / выхода, поэтому создание сценария должно быть довольно простым. Это должно работать с ранее существовавшими скриптами hook, тогда как первое решение может не быть (из-за недоступности ожидаемых переменных).
NM действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.
просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /etc/network/interfaces
, сделал разницу. ни один из скриптов hook-scripts не был вызван, и я собирался приступить к обходному пути с использованием 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
Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить dhclient- {enter, exit} -hooks?» Короткий ответ: вы не можете без какой-либо работы. См. эту ошибку для хорошего обсуждения проблемы и некоторых решений.
Как было предложено 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 * (см. man NetworkManager). Поскольку вы можете передавать только переменные, которые NM дает сценарий диспетчера, это может быть не полностью прозрачное решение.
Непроверенная, взломанная, но более простая альтернатива - переименование / usr / lib / NetworkManager / nm- dhcp-client.action и поставил вместо него сценарий, который безоговорочно выполняет exec во вновь названном nm-dhcp-client.action. Вы могли бы в значительной степени скопировать большую часть / sbin / dhclient-script, которая запускает крючки ввода / выхода, поэтому создание сценария должно быть довольно простым. Это должно работать с ранее существовавшими скриптами hook, тогда как первое решение может не быть (из-за недоступности ожидаемых переменных).
NM действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.