
Ich möchte, dass jedes Mal, wenn ich ein USB-Modem einstecke, ein Shell-Skript ausgeführt wird.
Wie würde ich das machen?
Antwort1
Sie können dies mit einigen Udev-Regeln erreichen, wie @Rinzwind vorgeschlagen hat.
Speichern Sie Ihr Skript zunächst an einem für andere Benutzer zugänglichen Ort. Sie können es beispielsweise als speichern /usr/local/bin/script.sh
.
Machen Sie das Skript jetzt für andere zugänglich.
sudo chmod 555 /usr/local/bin/script.sh
Schließen Sie nun Ihr USB-Modem an und führen Sie dann aus lsusb
. Unten sehen Sie eine Beispielausgabe:
$ 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
Suchen Sie am Ende die Zeile mit dem Namen Ihres Modems. Suchen Sie nun den Teil in der Mitte des Formats ID XXXX:####
. Die Teile XXXX
und ####
sind dieHersteller-IDUndGeräte IDjeweils.
In diesem Beispiel lautet die dritte Zeile, in der steht … ID 0fcf:1008 Dynastream …
, die Hersteller-ID 0fcf
und die Geräte-ID 1008
. Ihr Gerät hat für diese IDs unterschiedliche Werte.
Jetzt verwenden wir diese IDs, um eine Regel für udev zu erstellen.
Erstellen Sie jetzt mit udev eine Regel für dieses Gerät.
Erstellen Sie eine Regeldatei mit
sudo nano /etc/udev/rules.d/90-local.rules
Fügen Sie die folgende Zeile hinzu:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{vendor}=="0xXXXX", ATTRS{device}=="0x####", RUN+="/usr/local/bin/script.sh"
Ersetzen Sie XXXX
durch denHersteller-IDvon früher und ersetzen Sie ####
durch dieProdukt IDvon früher.
Erzwingen Sie nun, dass udev seine Regeln neu lädt (alternativ können Sie diesen Schritt überspringen und neu starten).
udevadm control --reload-rules
sudo service udev restart
Und du bist fertig!
Quellen:Ähnliche Frage zu SU bezüglich udev-Regeln,Erstellen von udev-Regeln