Как автоматически обнаружить состояние сетевого интерфейса с NM

У меня есть устройство eth0 и устройство tun0 (VPN), и я хотел бы автоматически обнаружить, если какое-либо из этих устройств изменит свой статус, т.е. они находятся вверх или вниз.

В каждом случае я хотел бы автоматически вызывать предопределенный сценарий. Итак:

  • если eth0 уходит вниз, я хотел бы вызвать сценарий 1
  • если tun0 уходит вниз, сценарий 2
  • если tun0 уходит вверх, сценарий 3

Как это сделать с NetworkManager?

Для tun0 я могу использовать /etc/network/interfaces:

auto tun0
iface tun0 inet manual
    up /bin/sh /home/matej/tun-up.sh
    down /bin/sh /home/matej/tun-down.sh

А как насчет eth0, так как сеть управляется NetworkManager?

1
задан 5 March 2021 в 20:06

1 ответ

Большое спасибо! Это то, что я сделал:

sudo nano /etc/NetworkManager/dispatcher.d/02-events

с содержимым:

#!/bin/sh -e

if [ "$1" = "eth0" ] && [ "$2" = "down" ] ; then
echo "eth0 is down!" >> /home/matej/dispatch.txt
fi

if [ "$1" = "tun0" ] && [ "$2" = "down" ] ; then
echo "VPN is down!" >> /home/matej/dispatch.txt
fi

if [ "$1" = "tun0" ] && [ "$2" = "up" ] ; then
echo "VPN is up!" >> /home/matej/dispatch.txt
fi

сделать его исполняемым исполняемым:

sudo chmod +x /etc/NetworkManager/dispatcher.d/02-events

Перезапуск NM:

sudo service network-manager restart

Это работает как ожидалось, но когда я отключающуюся кабель Ethernet, есть около 10 секунд NetworkManager обнаруживает событие. Может ли это сократить, чтобы сказать 5 секунд?

1
ответ дан 18 March 2021 в 23:28

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

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