USB モデムを挿入するたびにスクリプトを実行する方法はありますか?

USB モデムを挿入するたびにスクリプトを実行する方法はありますか?

USB モデムを挿入するたびにシェル スクリプトを実行したいと思います。

どうすればいいでしょうか?

答え1

@Rinzwind が提案したように、いくつかの udev ルールを使用してこれを実現できます。

まず、スクリプトを他のユーザーがアクセスできる場所に保存します。たとえば、 として保存できます/usr/local/bin/script.sh

次に、スクリプトを他のユーザーがアクセスできるようにします。

sudo chmod 555 /usr/local/bin/script.sh

次に、USB モデムを接続して を実行しますlsusb。以下は出力例です。

$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 0fcf:1008 Dynastream Innovations, Inc. Mini stick Suunto
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

最後にモデムの名前が書かれた行を見つけます。次に、フォーマットの中央付近の部分を見つけますID XXXX:####XXXX####部分は、ベンダーIDそしてデバイスIDそれぞれ。

この例では、3 行目の では、… ID 0fcf:1008 Dynastream …ベンダー ID は0fcf、デバイス ID は です1008。デバイスによって、これらの ID の値は異なります。

ここで、これらの ID を使用して udev のルールを作成します。

次に、udev を使用してこのデバイスのルールを作成します。

ルールファイルを作成する

sudo nano /etc/udev/rules.d/90-local.rules

次の行を追加します。

ACTION=="add", SUBSYSTEM=="usb", ATTRS{vendor}=="0xXXXX", ATTRS{device}=="0x####", RUN+="/usr/local/bin/script.sh"

XXXXを置き換えるベンダーID先ほど####製品番号先ほどから。

ここで、udev にルールを強制的に再読み込みさせます (または、この手順をスキップして再起動することもできます)

udevadm control --reload-rules
sudo service udev restart

これで完了です!

出典:SU の udev ルールに関する同様の質問udevルールの作成

関連情報