USB-to-Ethernetアダプター(以前に使用されたもの)を接続すると、MACアドレスが返され、もう一方の端に接続されているものがあれば、IPアドレス(私の場合は192.168.1.1、 NetworkManagerのstatic)。反対側には、そのPCで実行されているDHCPサーバーがIPを提供するのを待つさまざまな機器があります。
問題は、サブネットが見つからない場合、DHCPサーバーが起動を拒否するため、接続が確立するまでDHCPサーバーを起動できないことです。 NetworkManagerからIP 192.168.1.1を受信した後、systemctl restart isc-dhcp-server.service
を実行するにはどうすればよいですか?
ATTR{address}=="f0:1f:af:3d:6c:e7" RUN+="systemctl restart isc-dhcp-server.service"
でudevルールを使用することを考えましたが、IPが割り当てられる前に実行されます。使用できるudevオプションはありますか、それともsystemdやNetworkManagerなどを使用して別の方法を使用する必要がありますか?
システムはsystemdで構成されています。
したがって、1つの解決策は、isc-dhcp-server
とusbデバイスの間に依存関係を追加することです。
systemctl | grep -i sys-subsystem-net-devices.*6c.*e7
ps 6c&e7は、USBデバイスからのMacの最後の2バイトです
あなたは何かのようなものを持っている必要があります
sys-subsystem-net-devices-enxf01faf3d6ce7.device
isc-dhcp-server
のユニットファイルを修正export EDITOR=emacs # <= change to what you want
systemctl edit isc-dhcp-server.service
これらの行を追加します
[Unit]
After=sys-subsystem-net-devices-enxf01faf3d6ce7.device
Wants=sys-subsystem-net-devices-enxf01faf3d6ce7.device
リブート
これらのコマンドを実行して、isc-dhcp-server
のステータスと設定を確認します
systemctl show --property=After isc-dhcp-server.service
systemctl status isc-dhcp-server.service
SystemdサービスをトリガーするUDEVはこれを行う方法です。
あなたはUSB IDでUSBアダプタを照合することができます、それはあなたがMacアドレスを見ることができるのは遅すぎます。
この投稿には指示があります
https://unix.stackexchange.com/questions/229987/udev-rule-to-match-any-usb-storage-device