
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
ネットワークは Network Manager によって管理されているので、eth0 はどうでしょうか?
答え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
これは期待通りに動作しますが、イーサネット ケーブルを抜くと、NetworkManager がイベントを検出するまでに約 10 秒のタイムアウトが発生します。これを 5 秒程度に短縮することはできますか?