Hallo Malte, Du schriebst am 18.01.09 15:12:43
Warum funktioniert diese udev-Regel nicht:
SUBSYSTEMS=="scsi", KERNEL=="sd*", ATTRS{model}=="i.Beat*", \ RUN+="/usr/local/bin/ibeat.sh"
Ich kann das jetzt nicht pruefen, aber kann es sein das statt ATTRS SYSFS angegeben sein muss? Zumindest habe ich ein Beispiel mit SYSFS gesehen. Von http://www.ecarux.de/index2.php?option=com_content&do_pdf=1&id=37 KERNEL=="sd?", SUBSYSTEMS=="scsi", SYSFS{vendor}=="Samsung", SYSFS{model}=="YP-U2", NAME="mp3player" RUN+="/usr/local/bin/mp3player-script" Oder alles wirklich in einer Zeile, oder zum testen mal nur SUBSYSTEMS=="scsi" angeben.
lsscsi erkennt den MP3Player korrekt:
[14:0:0:0] disk TrekStor i.Beat motion 1.00 /dev/sda
Der Model-Name simmt, scsi stimmt, die Regelsyntax stimmt, aber das Skript wird nicht ausgeführt... ja, es ist auch 755.
Gruss Hugo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi,
Du schriebst am 18.01.09 15:12:43
Warum funktioniert diese udev-Regel nicht:
SUBSYSTEMS=="scsi", KERNEL=="sd*", ATTRS{model}=="i.Beat*", \ RUN+="/usr/local/bin/ibeat.sh"
Ich kann das jetzt nicht pruefen, aber kann es sein das statt ATTRS SYSFS angegeben sein muss?
Soll bei SCSI-Geräten schon so richtig sein, habe ich aber auch schon probiert.
Zumindest habe ich ein Beispiel mit SYSFS gesehen.
Von http://www.ecarux.de/index2.php?option=com_content&do_pdf=1&id=37
Danke für den Link, werd ich mal durchlesen, bin mir sicher, es liegt nur an einer Kleinigkeit. Malte -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Von http://www.ecarux.de/index2.php?option=com_content&do_pdf=1&id=37
Problem erkannt, fast gelöst. Habe in /etc/udev/udev.conf den Loglevel gesetzt und /var/log/messages angesehen und siehe da, das Problem ist gar nicht meine Regel, die wird sehr wohl ausgeführt. Das Problem ist mein aufgerufenes Skript, ich musste dort an alle Befehle den vollen Pfad voransetzen. Wenn man ein Shellskript per udev aufruft, werden scheinbar überhaupt keine oder weniger Umgebungsvariablen mitgegeben. Der Aufruf "kdialog ...." hat z.B. einen Fehler verursacht, musste /opt/kde3/bin voranstellen... Malte -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Malte Gell schrieb:
Wenn man ein Shellskript per udev aufruft, werden scheinbar überhaupt keine oder weniger Umgebungsvariablen mitgegeben.
Das ist meiner Meinung nach das gleiche, wie bei cron-Jobs. auch da hat man so gut wie gar kein Environment. Gruß Axel -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Malte Gell wrote:
[...] Wenn man ein Shellskript per udev aufruft, werden scheinbar überhaupt keine oder weniger Umgebungsvariablen mitgegeben.
Der Aufruf "kdialog ...." hat z.B. einen Fehler verursacht, musste /opt/kde3/bin voranstellen...
Udev selbst hat kein aktives Terminal (Du bekommst kein stdout zu sehen, wenn Dein Skript laeuft) und das Skript wird von udev auch nicht innerhalb einer Shell ausgefuehrt, Du brauchst also zwingend ein shebang in Deinem Skript. Es stehen diverse udev Variablen als Umgebungsvariablen zur Verfuegung, so dass man z.B. ueber die Variable ACTION ermitteln kann, ob ein Device angeschlossen oder abgezogen wird, aber den Komfort einer normalen Shell Umgebung solltest Du nicht erwarten. Grafische Programme aufrufen ist uebrigens nicht ganz ohne Tuecke, ich bin mir nicht ganz sicher ob das was Du vorhast auch so funktionieren wird. Anyway, Du kannst eine udev Regel ueber "udevtest" testen, ohne dass was passiert - das haette Dir vermutlich direkt gezeigt, dass die Regel angewandt wird und Dein Fehler daher im Skript selbst zu suchen ist. Cheers, Th. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo,
[...] Wenn man ein Shellskript per udev aufruft, werden scheinbar überhaupt keine oder weniger Umgebungsvariablen mitgegeben. (...) Udev selbst hat kein aktives Terminal (Du bekommst kein stdout zu sehen, wenn Dein Skript laeuft) und das Skript wird von udev auch nicht innerhalb einer Shell ausgefuehrt, Du brauchst also zwingend ein shebang in Deinem Skript.
Das hab ich immer, macht aber scheinbar keinen Unterschied.
(...) Grafische Programme aufrufen ist uebrigens nicht ganz ohne Tuecke, ich bin mir nicht ganz sicher ob das was Du vorhast auch so funktionieren wird.
Konrekt will ich den KDE4 Filemanager Dolphin starten, wenn ich den MP3Player einstecke. Richtig, ein grafisches Programm bringt dann "cannot connect to x server", wenn ich es aus dem Skript z.B. so aufrufe: export DISPLAY=:0.0 su - malte_gell -c "/usr/bin/dolphin &" Ich mach das mit su, damit Dolphin als entsprechender User gestartet wird, wie gesagt, kommt aber nur "cannot connect to x server".
Anyway, Du kannst eine udev Regel ueber "udevtest" testen, ohne dass was passiert - das haette Dir vermutlich direkt gezeigt, dass die Regel angewandt wird und Dein Fehler daher im Skript selbst zu suchen ist.
Ok, habe es über /etc/udev/udev.conf:udev_log="info" gemacht. Ist übrigens fies, wenn man das vergisst vorm nächsten Neustart wieder rauzunehmen... Gruß Malte -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Malte, bitte lasse die Zeile, in der steht, wen Du zitierst, in der Email stehen, sonst weiss niemand, auf wen Du Bezug nimmst. Ich habe die Zeile wieder eingefuegt. Malte Gell wrote:
Thomas Hertweck wrote:
(...) Grafische Programme aufrufen ist uebrigens nicht ganz ohne Tuecke, ich bin mir nicht ganz sicher ob das was Du vorhast auch so funktionieren wird.
Konrekt will ich den KDE4 Filemanager Dolphin starten, wenn ich den MP3Player einstecke. Richtig, ein grafisches Programm bringt dann "cannot connect to x server", wenn ich es aus dem Skript z.B. so aufrufe:
export DISPLAY=:0.0 su - malte_gell -c "/usr/bin/dolphin &"
Ich mach das mit su, damit Dolphin als entsprechender User gestartet wird, wie gesagt, kommt aber nur "cannot connect to x server".
Ich dachte mir schon, dass das, was Du vorhast, so nicht gehen wird. IMO macht es auf einem Multi-User System wie Linux auch nicht so viel Sinn, das direkt zu loesen wie von Dir angegangen. Ich denke, eine Loesung ueber hal und von dort ggf. auch ueber dbus waere sinnvoller. Im Endeffekt willst Du ja das Gleiche erzielen wie das, was beim Einstecken eines USB Sticks passiert: das Device wird angelegt, hal wird informiert, hal nutzt dbus (so lief es zumindest in der Vergangenheit under Fedora), um das Volume ueber ein weiteres Programm (gnome-volume-manager) zu mounten, und dann wird ein Fenster mit dem Inhalt des Sticks praesentiert. Ich denke, Du musst Dich da noch etwas tiefer in die Materie einlesen, wenn Du das elegant loesen willst. Stichwoerter wie udev, hal, device management, dbus freedesktop usw. sollten Dir evtl. weiter helfen. Ich bin allerdings auch kein Experte fuer die Materie - hinter der Kulisse passiert so einiges, wenn man z.B. einen USB Stick einstoepselt, und diese Technik im Hintergrund hat sich in der Vergangenheit auch immer mal wieder geaendert. Cheers, Thomas -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Thomas Hertweck
Malte, bitte lasse die Zeile, in der steht, wen Du zitierst, in der Email stehen, sonst weiss niemand, auf wen Du Bezug nimmst. Ich habe die Zeile wieder eingefuegt.
Ich musste den Absender gar nicht löschen, KMail hat erst gar keinen erzeugt ;-) War ein Vorlagenproblem. Ob sich KMail der Windowswelt nähern will, ich hoffe es nicht.
Malte Gell wrote:
Konrekt will ich den KDE4 Filemanager Dolphin starten, wenn ich den MP3Player einstecke. Richtig, ein grafisches Programm bringt dann "cannot connect to x server", wenn ich es aus dem Skript z.B. so aufrufe:
export DISPLAY=:0.0 su - malte_gell -c "/usr/bin/dolphin &"
(...) Ich denke, eine Loesung ueber hal und von dort ggf. auch ueber dbus waere sinnvoller. Im Endeffekt willst Du ja das Gleiche erzielen wie das, was beim Einstecken eines USB Sticks passiert: das Device wird angelegt, hal wird informiert, hal nutzt dbus (so lief es zumindest in der Vergangenheit under Fedora), um das Volume ueber ein weiteres Programm (gnome-volume-manager) zu mounten, und dann wird ein Fenster mit dem Inhalt des Sticks praesentiert. (...)
Ok, werde mir das anschauen, dachte, es wäre ex und hopp machbar, in einer ct letztes Jahre gab es einen Artikel über udev und hal, zum Glück hab ich die noch. Malte -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Axel Birndt
-
HugoMahr@web.de
-
Malte Gell
-
Thomas Hertweck