
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
これで完了です!