udev Run-Befehle werden nicht ausgeführt

udev Run-Befehle werden nicht ausgeführt

Ich versuche, eine Udev-Regel zu erstellen, um meinen Computer zu entsperren, wenn ich mein Telefon über USB anschließe. Ich konnte nicht feststellen, dass diese Regel ausgeführt wurde, und habe daher eine viel einfachere Regel ausprobiert. Dies ist die Regel (anonymisiert):

KERNEL=="sd?1", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", SYMLINK+="phone", RUN+="touch /home/user/udev.touch"

Ich weiß, dass die Regel ausgeführt wird, weil der Link phone -> sdc1erstellt wird, die Datei jedoch nicht. Gibt es Sicherheitseinstellungen, die ich aktivieren muss, damit die Datei ein externes Programm ausführen kann?

Antwort1

Sie müssen den vollständigen Pfad im RUN-Schlüssel verwenden, weil ( man udev)

Wenn kein absoluter Pfad angegeben wird, wird erwartet, dass sich das Programm in /lib/udev befindet, andernfalls muss der absolute Pfad angegeben werden. Programmname und Argumente werden durch Leerzeichen getrennt. Um Argumente mit Leerzeichen anzugeben, können einfache Anführungszeichen verwendet werden.

Dennoch sollte sich das (Bash-)Skript selbst normal verhalten, d. h. Sie müssen den Pfad nicht angeben.

Antwort2

Ich hatte das gleiche Problem mit udev. Ich habe fast alles versucht, um die Skripte beim Hinzufügen und Entfernen von Geräten zum Laufen zu bringen.

Dies ist der Code, den ich erstellt habe:

ACTION=="add", KERNEL=="sda1", SUBSYSTEMS=="scsi", ATTRS{model}=="AVV207-0        ", SYMLINK+="Lacie", MODE="0666", RUN+="/bin/sh /usr/bin/udev/lacie-add.sh", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sda1", RUN+="/bin/sh /usr/bin/udev/lacie-del.sh", OPTIONS="last_rule"

Das Hinzufügen des OPTIONS="last_rule"Parameters hat den Trick getan.

Antwort3

Ich hatte dieses Problem auch und kann bestätigen, dass Sie ab 12.04 den vollständigen bashPfad und das vollständige bashSkript angeben müssen, damit der RUN-Befehl funktioniert.

verwandte Informationen