Вопрос Выполните некоторую операцию, как только eth0 встанет


Я должен выполнить рутину, которая требует, чтобы eth0 поднялся. Я попытался поместить его в /etc/rc.local, так или иначе, он не мог быть вызван, поскольку eth0 еще не был инициализирован.

Есть ли способ подключиться к диспетчеру событий системы, чтобы запустить скрипт, только когда обнаружен eth0?


2
2018-06-03 09:38


происхождения




ответы:


AFAIK, вы должны разместить свой скрипт в /etc/network/if-up.d/ каталог:

sudo cp /path/to/your_routine /etc/network/if-up.d/

Затем добавьте следующую строку после того, как вы определили eth0 интерфейса в /etc/network/interfaces файл:

post-up /etc/network/if-up.d/your_routine

где post-up команда запуска команды или сценарий оболочки после приведения интерфейса eth0 (см. man interfaces для получения дополнительной информации - где-то на линии 149).

Вот пример того, как /etc/network/interfaces файл должен выглядеть после того, как вы его отредактировали:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
имя Ethernet-карта LAN
адрес 192.168.10.1
netmask 255.255.255.0
трансляция 192.168.10.255
сеть 192.168.10.0
шлюз 192.168.10.254
post-up /etc/network/if-up.d/your_routine
# some more interfaces
auto eth1
iface eth1 inet dhcp
# ...

После этих изменений перезапустите сетевую службу:

sudo service networking restart

2
2018-06-03 09:58



Кажется приятным ... но я не вижу никакой ссылки на eth0 в вашем решении, будет ли выполняться процедура, когда каждый nic инициализируется? - Phate
@Phate Посмотрите, что я только что отредактировал свой ответ. - Radu Rădeanu
Он очень благодарен :) - Phate
@Phate Я рад это слышать! - Radu Rădeanu