web-dev-qa-db-ja.com

USB-to-Ethernetアダプタを接続した後のアクション

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などを使用して別の方法を使用する必要がありますか?

4
dargaud

システムはsystemdで構成されています。

したがって、1つの解決策は、isc-dhcp-serverとusbデバイスの間に依存関係を追加することです。

  1. systemdシステム下のデバイスの名前を特定する
systemctl | grep -i sys-subsystem-net-devices.*6c.*e7

ps 6ce7は、USBデバイスからのMacの最後の2バイトです

あなたは何かのようなものを持っている必要があります

 sys-subsystem-net-devices-enxf01faf3d6ce7.device
  1. 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
  1. リブート

  2. これらのコマンドを実行して、isc-dhcp-serverのステータスと設定を確認します

systemctl show --property=After isc-dhcp-server.service 

systemctl status isc-dhcp-server.service
1
EchoMike444

SystemdサービスをトリガーするUDEVはこれを行う方法です。

あなたはUSB IDでUSBアダプタを照合することができます、それはあなたがMacアドレスを見ることができるのは遅すぎます。

この投稿には指示があります

https://unix.stackexchange.com/questions/229987/udev-rule-to-match-any-usb-storage-device

0
Amias