systemd でイーサネット接続/切断時にスクリプトを実行する

systemd でイーサネット接続/切断時にスクリプトを実行する

私は組み込みデバイスを持っていますが、ローカルネットワークに接続されている場合はsystemd-networkdでDHCPサーバーに接続し、そうでない場合はDHCPサーバーに戻ります。まだ実装していませんが、ここで説明されている回答を使用する予定です。https://unix.stackexchange.com/a/309046/114497

この回答では、起動時に開始されるスクリプトの使用を指摘しています。実行時にユーザーがネットワーク ケーブルを抜いて PC に接続した場合、スクリプトを開始するためにボードを再起動する必要があるのではないかと思いました。そこで質問です。systemd でインターフェイスが変更されたときにスクリプトを開始する方法はあるのでしょうか?

PS: 使ってみましたネットワークディスパッチャ成功しませんでした。systemd-networkdサービスを再起動したり、イーサネット ケーブルを取り外したりしてみましたが、私が書いたスクリプト/usr/lib/networkd-dispatcherは実行されません。

答え1

これ答えネットワークが変更されたときに systemd で何ができるかを説明します...

代替ソリューションは多数ありますが、systemdのみを使用した直接的なシンプルなソリューションは2019年6月時点では実装されていません。

答え2

net-o-matic現在 を監視している私のスクリプトをDOWNを探すように適応させることができますUP。エントリから開始します@reboot root crontab

私はこれを支援する bash スクリプトを作成しました。https://github.com/waltinator/net-o-maticこのスクリプトは接続を監視し、接続が切断されると、ユーザーが指定した操作を実行して再接続を試みます。

関連情報