LINUX.ORG.RU
решено ФорумAdmin

Запускать сервис после появления интерфейса.

 


0

1

Прошивка OpenWrt на роутере.
Нужно запускать после рестарта сервис nftables.
Набросал такой сервис

#!/bin/sh /etc/rc.common

START=25

USE_PROCD=1
PROCD_DEBUG=1

start_service() {
        procd_open_instance
        procd_set_param command /usr/sbin/nft -f /etc/nftables.conf
        procd_set_param stdout 1
        procd_set_param stderr 1
        procd_close_instance
}

Проблема в том, что в правиле есть упоминания интерфейса br-lan и сервис запускается с ошибкой, т.к. этот интерфейс еще не доступен.
Пробовал добавлять procd_add_interface_trigger, но почему-то не работает.
Как запускать сервис в OpenWrt после появления интерфейса br-lan?


Ответ на: комментарий от Mike_RM

sleep работает.
Как и совет с hotplug выше.
Еще можно вместо iif прописать iifname в nftables.conf, но такой вариант почему-то только частично работает.

Sorcus
() автор топика

Хотя не смог удержаться и сделал через сервис procd.

root@OpenWrt:~# cat /etc/init.d/nftables 
#!/bin/sh /etc/rc.common

START=25

USE_PROCD=1

start_service() {
        procd_open_instance
        procd_set_param command /usr/sbin/nft -f /etc/nftables.conf
        procd_set_param stdout 1
        procd_set_param stderr 1
        procd_close_instance
}

service_triggers() {
        procd_add_interface_trigger "interface.*.up" "br-lan" /etc/init.d/nftables restart
        procd_add_interface_trigger "interface.*.up" "wg0" /etc/init.d/nftables restart
}
Правда запускается несколько раз с ошибкой, пока оба интерфейса br-lan и wg0 не будут подняты.

Sorcus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.