udev eigene Skripte einbinden [GELÖST]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

udev eigene Skripte einbinden [GELÖST]

Beitrag von chu-i » 18.05.2007 19:52:25

Hallo @ all,

weder exalead noch Forum Suche brachte mich weiter.
Ich finde immer nur veraltete Infos zum Thema udev.
Meistens in Kombination mit hotplug.

Zum Thema:
Ich habe hier ein Ubuntu laufen mit reinem udev (also ohne hotplug). Hier ein paar Info zum System.

Code: Alles auswählen

udevinfo -V
udevinfo, version 079

Code: Alles auswählen

uname -r
2.6.15-27-386
Ich wollte den Namen meines MP3 Players ändern. Zur Zeit ziemlich kryptisch.
Daher habe ich mir eine eigene Regeln erstellt die meinen MP3-Player einen anderen Namen geben soll.

Code: Alles auswählen

ls -la /etc/udev/rules.d
insgesamt 156
drwxr-xr-x 2 root root  4096 2007-04-07 12:22 .
drwxr-xr-x 3 root root  4096 2007-03-01 20:51 ..
-rw-r--r-- 1 root root   262 2006-05-22 16:25 00-init.rules
-rw-r--r-- 1 root root   202 2007-03-30 13:52 10-local.rules
-rw-r--r-- 1 root root  2264 2006-05-22 16:25 20-names.rules
-rw-r--r-- 1 root root   190 2006-05-22 16:25 25-iftab.rules
-rw-r--r-- 1 root root  3048 2007-03-30 11:13 40-permissions.rules
-rw-r--r-- 1 root root 47992 2006-08-06 01:25 45-libgphoto2.rules
-rw-r--r-- 1 root root 28262 2006-04-06 09:12 45-libsane.rules
-rw-r--r-- 1 root root  1306 2006-05-22 16:25 60-symlinks.rules
-rw-r--r-- 1 root root    80 2007-02-21 20:19 60-vboxdrv.rules
-rw-r--r-- 1 root root  2585 2006-05-22 16:25 65-persistent-disk.rules
-rw-r--r-- 1 root root   385 2006-05-22 16:25 80-programs.rules
-rw-r--r-- 1 root root   171 2006-05-29 14:03 85-alsa.rules
-rw-r--r-- 1 root root   208 2006-05-22 17:09 85-hal.rules
-rw-r--r-- 1 root root    81 2006-01-04 12:13 85-hdparm.rules
-rw-r--r-- 1 root root   126 2006-05-16 03:43 85-hwclock.rules
-rw-r--r-- 1 root root   657 2006-01-30 14:40 85-ifupdown.rules
-rw-r--r-- 1 root root   937 2006-03-23 21:40 85-pcmcia.rules
-rw-r--r-- 1 root root    82 2006-05-22 17:09 90-hal.rules
-rw-r--r-- 1 root root  2534 2006-05-22 16:25 90-modprobe.rules
-rw-r--r-- 1 root root    75 2006-05-22 16:25 99-udevmonitor.rules

Code: Alles auswählen

cat /etc/udev/rules.d/10-local.rules
# USB System
SUBSYSTEM!="usb_device", GOTO="ueberspringe"
BUS=="usb", KERNEL=="sd?1", SYSFS{serial}=="0002F9AFB08CC218", OWNER="xxx", GROUP="yyy", MODE="0600", NAME="MP3-Player"
LABEL="ueberspringe"

Ergebnis: keine Wirkung
? Die eigentliche Namensvergabe erfolgt in der 20-names.rules. Hebt die meine Änderungen nachträglich auf?

Weiterhin versuche ich ein rsync Skript auszuführen wenn ich meinen USB-Stick anstecke.
Habt Ihr hierzu einen Vorschlag?
Daran habe ich noch nicht gearbeitet da ich ja schon an dem vermeintlich einfacheren Thema scheitere.


Danke für eure Hilfe.
Zuletzt geändert von chu-i am 12.06.2007 14:07:31, insgesamt 1-mal geändert.
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

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

Beitrag von detix » 18.05.2007 21:04:17

Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Beitrag von chu-i » 19.05.2007 12:36:51

Danke detix,

der Link war hilfreich. :)
Dennoch scheint mein udev nicht an der Ausführung meiner Kommandos interessiert zu sein.
Weder wird der Name meines MP3-Players umbenannt, noch die Backupskripte gestartet.
Da mein Skript als zweite udev Regel ausgeführt wird, sollte es doch angezogen werden.

Das einzige udev Skript das vorher läuft hat folgenden Inhalt
und ist meiner Meinung für das ausführen meiner Regeln ohne Bedeutung.

Code: Alles auswählen

 cat /etc/udev/rules.d/00-init.rules
# Wait for the "bus" link to appear in sysfs
ACTION=="add", DEVPATH=="/devices/*", ENV{PHYSDEVBUS}=="?*", \
        WAIT_FOR_SYSFS="bus"

# Wait for the "address" attribute of network devices to appear in sysfs
ACTION=="add", SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
Meine selbstgebaute Datei sieht so aus:

Code: Alles auswählen

 cat /etc/udev/rules.d/10-local.rules
SUBSYSTEM!="usb_device", GOTO="jump"

# MP3-Player umbenennen
BUS=="usb", KERNEL=="sd?1", SYSFS{serial}=="0002F9AFB08CC218", OWNER="XXX", GROUP="XXX", MODE="0600", NAME="MP3-Player"

# Cruzer Sicherung
BUS=="usb", KERNEL=="sd?1", SYSFS{serial}=="SanDisk_Cruzer_0E281500D366", OWNER="XXX", GROUP="XXX", MODE="0600", ACTION=="add", RUN+="/home/XXX/.backupscript.sh %k"

# Leading Sicherung
BUS=="usb", KERNEL=="sd?1", SYSFS{serial}=="Prolific_USB_Flash_Disk", OWNER="YYY", GROUP="YYY", MODE="0600", ACTION=="add", RUN+="/home/YYY/.backupscript.sh %k"

LABEL="jump"
Selbst wenn die nachfolgenden Regeln (siehe Listing erster Beitrag) noch eine Änderung ausführen, meine Backupskripte sollten dann schon gestartet sein.
Sind sie jedoch nicht. :roll:

Also vielleicht ein grundlegender Fehler in meinem Code.

Habt Ihr Vorschläge?
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 19.05.2007 21:30:23

Schon mal versucht, mit udevmonitor zu sehen, was genau passiert, wenn du den Stick einsteckst? Eventuell siehst du da, wo der Fehler liegt.

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

Beitrag von detix » 20.05.2007 09:24:53

Was sagt denn
udevinfo -a -p `udevinfo -q path -n sd?1`
zum Device (Fragezeichen bitte ersetzen)?
Bei mir werden USB-, MP3-Stick, wie auch CDROM als
SUBSYSTEM=="block"
erkannt und nie als 'usb_device' und 'SYSFS' ist hier 'ATTRS'.
Noch 2 gute Links zum Thema:
http://wiki.ubuntuusers.de/udev?highlight=%28udev%29
http://de.gentoo-wiki.com/Udev_Rules
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Beitrag von chu-i » 11.06.2007 10:01:23

SUBSYSTEM=="block" das war's, danke.
Komisch nur das die original Skripte mit usb_device laufen, vielleicht eine Variable. :roll:

Eine Sache hätte ich dann doch noch. :lol:

Ich versuche ein Backupskript zu starten das per zenity ein Paar Fenster in X einblendet.
Für Ich das Skript als gerade aktiver Benutzer manuelle aus, funktioniert alles wie gewünscht.
Über udev hingegen, wird das Skript zwar gestartet (sehe ich an den Logs) jedoch schafft es das Skript nicht auf die aktuelle X-Session zu schalten und bricht daher ab.

Wie übergebe ich udev die Berechtigung beim aktuell eingeloggten Benutzer ein Fenster zu öffnen?
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

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

Beitrag von detix » 12.06.2007 10:10:27

Steht aber auch da:

Code: Alles auswählen

export XAUTHORITY=/home/blauweiss/.Xauthority
export DISPLAY=:0.0
Xdialog --yesno "Backup auf /dev/$1 durchführen?" 5 40
ersetz die Xdialog Zeile durch deine zenity Zeile.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
chu-i
Beiträge: 157
Registriert: 10.11.2005 23:29:01
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Berlin

Beitrag von chu-i » 12.06.2007 14:07:04

:oops: Ups, Danke! :oops:
Thx & cya Chu-i

„Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren.“
Benjamin Franklin (1706-1790†)

Antworten