web-dev-qa-db-ja.com

USBデバイスを接続または取り外した後にスクリプトを自動実行する

USBデバイスのマウント/プラグインまたはアンマウント/アンプラグ後にスクリプトを自動的に実行するにはどうすればよいですか?

22
Radu Rădeanu

MinimusHeximus に感謝し、 thread へのそれぞれの貢献者は、私の同様の質問へのコメントで言及しました。次の答え。

このようなUSBデバイスには、それぞれの値<fortheseparts>を入力するだけで、5つの(5つの)ファイルが必要です。

/etc/udev/rules.d/00-usb-<yourdevice>.rules

ACTION=="add", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-in_udev"    
ACTION=="remove", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-out_udev"

/usr/local/bin/usb-<yourdevice>-in_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-in &

/usr/local/bin/usb-<yourdevice>-in

#!/bin/bash
sleep 1
<yourbashscriptcode>

/usr/local/bin/usb-<yourdevice>-out_udev

#!/bin/bash
/usr/local/bin/usb-<yourdevice>-out &

/usr/local/bin/usb-<yourdevice>-out

#!/bin/bash
sleep 1
<yourbashscriptcode>

ノート:

  1. Terminalでコマンドlsusbを入力することにより、値<yourvendorid>および<yourproductid>をキャプチャできます。USBデバイスが接続されている場合、Bus 003 Device 002: ID 8087:07da Intel Corp.のような現在利用可能なすべてのUSBデバイスをリストします。ここで8087VendorIDおよび07daProductIDです。
  2. <yourdevice>は、任意の任意の任意の名前にすることができます。たとえば、汎用名 "keyboard "USBキーボード用のファイルを作成するときに、プラグインするたびに異なるキーボードレイアウトを適用する必要がありました。
  3. いくつかのシナリオでは、udevルールファイルのACTION=="remove"行を使用する必要がない場合があります。したがって、何もする必要がない場合(たとえば、逆方向に)、関連する2(2) "out"ファイルデバイスがプラグインされたときに行われた変更)、デバイスがプラグアウトされた後。
17
Sadi

ファイルマネージャーSpaceFM がそれを可能にします。 Auto Run設定を参照してください。たとえば、 Auto Run | On Mount または Auto Run | On Unmount .

4
jpfleury