Gibt es eine Möglichkeit, jedes Mal, wenn ich ein USB-Modem einstecke, ein Skript auszuführen?

Gibt es eine Möglichkeit, jedes Mal, wenn ich ein USB-Modem einstecke, ein Skript auszuführen?

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 XXXXund ####sind dieHersteller-IDUndGeräte IDjeweils.

In diesem Beispiel lautet die dritte Zeile, in der steht … ID 0fcf:1008 Dynastream …, die Hersteller-ID 0fcfund 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 XXXXdurch 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

verwandte Informationen