udev - script startet nicht

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
andreas123
Beiträge: 195
Registriert: 11.02.2007 21:15:49

udev - script startet nicht

Beitrag von andreas123 » 02.02.2013 21:54:42

Hallo,

ich habe hier ein Debian Squeeze.
Wenn ich einen USB-Stick dran stecke soll das Script "/usr/local/bin/backup" ausgeführt werden.
Aber genau das passiert nicht.
Der Symlink "/dev/usb-backup" wird tatsächlich angelegt.
Das Backupscript mountet, wenn ich es mit "/usr/local/bin/backup" aufrufe.
Nur über die udev-rule funktioniert das Ausführen des Scriptes nicht. Ich habe auch schon vergeblich versucht, direkt über die udev-rule zu mounten, indem ich RUN+="mount /media/backupstick" eingetragen habe.

/etc/udev/rules.d/91-usb-costum.rules

Code: Alles auswählen

SUBSYSTEM=="block" ,ACTION=="add" ,KERNEL=="sd?1" ,ATTRS{idVendor}=="1b1c" ,SYMLINK+="usb-backup , RUN+="/usr/local/bin/backup"
/usr/local/bin/backup

Code: Alles auswählen

#!/bin/sh
/bin/mount /media/backupstick
exit 0
/etc/fstab

Code: Alles auswählen

/dev/usb-backup /media/backupstick	vfat	users,atime,noauto,rw,nodev,exec,nosuid 0 0
Das gleiche Script läuft auf einem CentOS problemlos.

Hat vielleicht jemand eine Ahnung an was es liegen könnte?

Gruß Andreas

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: udev - script startet nicht

Beitrag von syssi » 03.02.2013 09:46:50

Unguenstig waere, wenn udev erst den Befehl ausfuehrt und danach den Symlink anlegt. Du kannst mit folgendem Befehl

Code: Alles auswählen

sudo udevadm control --log-priority=debug
udev gespraechiger machen. Anschliessend steckst du den Stick ein und ueberpruefst die gespraechigen Ausgaben von udev in /var/log/syslog. Moeglicherweise findest du damit die Ursache des Problems.

Gruss syssi

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: udev - script startet nicht

Beitrag von rendegast » 03.02.2013 11:37:01

Diese Variante?

Code: Alles auswählen

..., RUN+="/usr/local/bin/backup", RUN
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
detix
Beiträge: 1744
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: udev - script startet nicht

Beitrag von detix » 03.02.2013 13:01:03

Für einen USB-Stick mache ich das als udev-Regel so (stick ist als "backup_usbstick" gelabelt):

Code: Alles auswählen

KERNEL=="sd[g-i]1", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="backup_usbstick", ACTION=="add", RUN+="/bin/su -c '/usr/local/bin/pn_backup_usbstick %k %E{ID_FS_LABEL}' detix"
Über die Erkennung per Label wird ATTRS{idVendor}=="1b1c" ,SYMLINK+="usb-backup überflüssig,
genauso der Eintrag in der fstab, und das Skript wird hier als User (detix) ausgeführt.
Im Skript selbst steht dann zB sowas (Debianpmount muss installiert sein):

Code: Alles auswählen

UsbDevice="/dev/$1"
UsbLabel="$2"
pmount $UsbDevice $UsbLabel
...
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

andreas123
Beiträge: 195
Registriert: 11.02.2007 21:15:49

Re: udev - script startet nicht

Beitrag von andreas123 » 17.02.2013 20:40:49

Danke für die Hilfe!

Es hat eine Weile gedauert, bis ich mich wieder damit beschäftigen konnte.

Unter Debian kann ich machen was ich will - es funktioniert einfach nicht. Die Regel wird einfach nicht ausgeführt.
Genau die gleichen Dateien habe ich unter Xubuntu 12.04 verwendet und es funktioniert sofort.

Kann es damit zu tun haben, dass das Debian keine grafische Oberfläche hat und deshalb vielleicht etwas fehlt?

Der Tipp mit dem Label war besonders gut - weil ich zwei Sticks wechselweise verwende.

Gruß Andreas

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: udev - script startet nicht

Beitrag von rendegast » 18.02.2013 04:51:06

Hast Du mal

Code: Alles auswählen

udevadm test /block/sdb/sdb1
(entspr.) probiert, ob Dein Skript überhaupt berücksichtigt wird.
Im Erfolgsfall sähe das dann ungefähr so aus:

Code: Alles auswählen

...
parse_file: reading '/lib/udev/rules.d/91-permissions.rules' as rules file
parse_file: reading '/etc/udev/rules.d/91-usb-costum.rules' as rules file
parse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules file
...
udev_rules_apply_to_event: GROUP 25 /lib/udev/rules.d/91-permissions.rules:9
udev_rules_apply_to_event: RUN 'echo /usr/local/bin/backup' /etc/udev/rules.d/91-usb-costum.rules:6
udev_event_execute_rules: no node name set, will use kernel supplied name 'sdc1'
...
Kann es damit zu tun haben, dass das Debian keine grafische Oberfläche hat und deshalb vielleicht etwas fehlt?
Dann hinge es mit Deinem backup-Skript zusammen, zBsp. ob es ausführbar ist.
udev ist davon unabhängig.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten