udevのような一貫した継続的なネットワーク接続の命名

udevのような一貫した継続的なネットワーク接続の命名

同様のUSBネットワークデバイスが複数あります。この場合、CAN(can0とcan1)は異なるネットワークに接続されていますが、これは他の複数のネットワーク(WiFi、イーサネットなど)でも同様の問題のようです。現在can0とcan1と表示されていますが、さらに接続することもできます。

各場所にアクセスする一種の永続性を維持しようとしています。 udevを使用する非ネットワークデバイスの場合は、正しいコードが正しいデバイスにアクセスできるように、idVendor、idProduct、およびシリアル番号へのカスタムシンボリックリンク参照を許可します。

ifconfigでデバイスに対して同様の永続性を達成するにはどうすればよいですか?参考のために、各IDとシーケンスの詳細があります。

私はデバイスxが常にcan0で、デバイスyが常にcan1になることを望んでいません。デバイスは1つしかないのでcan0になるはずです。しかし、別の方法で接続されている場合、または別の順序で起動された場合は、can0がデバイスxまたはyであることを確認し、正しいコードを実行するか、そうでない場合は代替コードを実行したいと思います。

私はこれがudevロジックよりも優れたアプローチだと思いますが、どうすればいいかわからないようです。

これについていくつかのアドバイスが欲しいです。ティア

ベストアンサー1

udevを使用してこれを行うことができます。

# /etc/udev/rules.d/99-usb-can.rules

ACTION=="add", SUBSYSTEM=="net", ENV{ID_VENDOR_ID}=="...", ENV{ID_PRODUCT_ID}=="...", ATTR{...}=="...", NAME="myCustomCan", RUN+="/path/to/script.sh myCustomCan"

CANデバイスを識別するのに必要なだけENV / ATTRを使用してください。 ENV変数はATTRよりも安定しているので好ましい。

# /path/to/script.sh

INTERFACE=$1

sudo ip link set $INTERFACE type can bitrate 500000
sudo ip link set $INTERFACE up 

便利なコマンド:

sudo udevadm info /sys/class/net/can0– ENV 変数と値のリストを取得します。

sudo udevadm info -a /sys/class/net/can0- ATTR/ATTRS変数と値のリストを取得します。

sudo udevadm control --reload-rules && sudo udevadm trigger- udevルールを再ロードします。

sudo udevadm control --log-priority=debug– udev ログ出力をデバッグモードに設定します。

tail -f /var/log/syslog | grep -A 1 --color 'can0|myCustomCan'- インターフェイスが正しく検出されたことを確認するには、udevの出力を取得します。一部の出力を表示するには、デバイスを再接続する必要があります。

ip -details link show myCustomCan- 設定(例:ビットレート)も表示されます。

Ubuntu 20.04でこれらのコマンドを使用しました。他のディストリビューションでは異なる場合があります。

おすすめ記事