Как узнать о статусе конкретного интерфейса во FreeBSD?
ifconfig <ifname> | grep "status: active"
работает нормально, но я хочу избежать опроса и как можно быстрее получать информацию о ifup / ifdown.
devd(8)
сделает свое дело. Вам необходимо настроить его для запуска действия, если LINK_UP
или LINK_DOWN
событие произошло на интерфейсе. Пример конфигурации для добавления в /etc/devd.conf
или даже лучше создать /etc/devd/interface.conf
:
notify 0 {
match "system" "IFNET";
match "subsystem" "(em0|em1)";
match "type" "LINK_DOWN";
action "/usr/local/sbin/notifier.sh $subsystem"
}
Приведенная выше конфигурация предполагает, что вы хотите получать уведомления, когда интерфейс em0
или em1
отключается и вызывает сценарий при возникновении события. Он также передаст имя интерфейса (отсюда $subsystem
) к сценарию.
Вы можете отслеживать события вверх / вниз через devd (8). Посмотрите на devd.conf (5) события LINK_UP и LINK_DOWN.