У меня есть устройство eth0 и устройство tun0 (VPN), и я хотел бы автоматически обнаружить, если какое-либо из этих устройств изменит свой статус, т.е. они находятся вверх или вниз.
В каждом случае я хотел бы автоматически вызывать предопределенный сценарий. Итак:
Как это сделать с 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?
Большое спасибо! Это то, что я сделал:
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 секунд?