Неиспользуемые скрипты 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

Snip из моего / etc / network / interfaces

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

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

10 ответов

просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /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
0
ответ дан 2 August 2018 в 01:01

Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить 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 действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.

2
ответ дан 2 August 2018 в 01:01

просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /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
0
ответ дан 4 August 2018 в 16:32

просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /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
0
ответ дан 6 August 2018 в 01:12

Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить 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 действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.

2
ответ дан 6 August 2018 в 01:12

просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /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
0
ответ дан 7 August 2018 в 18:38

Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить 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 действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.

2
ответ дан 7 August 2018 в 18:38

Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить 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 действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.

2
ответ дан 10 August 2018 в 07:17

просто натолкнулся на то, что кажется несвязанным решением проблемы, - что интерфейс, неправильно объявленный в /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
0
ответ дан 15 August 2018 в 19:18

Поскольку этот вопрос на самом деле не вопрос, я буду считать, что вопрос: «Как я могу запустить 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 действительно должен уже запускать крючки, потому что кажется, что некоторые пакеты не работают как и ожидалось без него.

2
ответ дан 15 August 2018 в 19:18
  • 1
    Вместо переименования nm-dhcp-client.action hack http://andytson.com/blog/2009/03/workaround-so-networkmanager-runs-dhclient-hooks/ показывает лучший способ, а именно указать скрипт в dhclient.conf (который переопределяет командную строку arg). Сценарий переопределения должен быть в / etc / dhcp / dhclient-script или вам нужно будет изменить apparmor. – crass 8 August 2012 в 15:52

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

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