UDEV Regel

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Nur unbedingt dran denken, dass das nur für kurzläufer geeignet ist... also script starten, was machen und sofort wieder beenden....

    Darum wollte ich ja mit den Script ein anderes starten..

    aber mir gelingt nicht mal das, egal was ich in

    Code
    /usr/local/bin/create-journal-entry 

    eintrage, da wird außer dein Befehl nichts ausgeführt.

    Allerdings habe ich bei der Ausgabe bemerkt, dass es bei meiner noch bestehenden Udev Regel einen Fehler ausgibt, vielleicht gibt das Aufschluss.

    Code
    pi@raspberrypi:~ $ sudo journalctl -f
    Feb 11 07:56:49 raspberrypi systemd-udevd[992]: Process '/home/pi/shscript.sh' failed with exit code 1.
  • Allerdings habe ich bei der Ausgabe bemerkt, dass es bei meiner noch bestehenden Udev Regel einen Fehler ausgibt, vielleicht gibt das Aufschluss.

    Wie soll man denn jetzt dieses Problem lösen, wenn man nicht die aktuelle fehlerhafte Version Deines Scriptes sehen kann? Ich hatte schon einmal darauf hingewiesen und Dich gebeten, immer vollständige Informationen zu posten. Soll man sich jetzt mühsam aus diesem Thread mit 62 Postings irgendeine alte Version Deines Scriptes heraussuchen, um dann dafür mit Arbeit und Zeit eine Antwort zu schreiben, um dann zu erfahren "Ach nee, das ist die falsch Version, da hatte ich dies und das und jenes schon geändert"? Dafür ist mir meine Zeit zu schade....ebenso dafür, mehrfach auf das gleiche hinzuweisen.

    Bitte vollständige Angaben mit Fehlermeldungen... so das man den Zusammenhang erkennen kann. Dann lässt sich das auch lösen.

  • Tja, was soll man dazu sagen... :conf:... ich bin darüber auch nicht wirklich verärgert... ich frage mich sogar manchmal, ob ich nicht vielleicht sogar schon mit den einfachen Anforderungen zu viel verlange. *hmmm*

    Ich denke, die meisten denken nicht darüber nach, dass ihre Problemstellung in etwa der folgenden Situation entspricht: Jefe kommt zu Fuss in die KFZ-Werkstatt gelaufen, sein Auto steht zuhause in der Garage... er fragt nach dem Meister und nach der Begrüßung fragt er "Mein Auto fährt nicht, warum nicht?"

    Was soll der Meister sagen? "Einfrach mal volltanken" Oder "Batterie wechseln" Oder "Prüfen, obs das eigene Auto ist und nicht ein anderes, wo sich der Fahrer mit der Garage vertan hat"

    Kein Mensch käme auf die Idee, sowas zu tun, also Hände in die Taschen gesteckt und dann auch noch erwarten, dass das Auto repariert wird. Aber hier ist das i.ü.S. die Regel. Dabei gilt das gleiche auch hier, ohne den Blick unter die Haube kann's niemand repaieren. Das 'Problem" muss immer mitgebracht werden, einfach nur zu sagen "Mein Auto fährt nicht" funktioniert in der Computerei nicht. Aber wenn das Bewusstsein nicht da ist, kann man das doch auch nicht vorwerfen.... wenn man sich dabei auch noch an seine eigenen Anfänger-Sünden erinnert....

  • ja, Du beschreibst es wirklich treffend.

    Aber wenn ich mehrfach dazu aufgefordert werde, das was ich meine falsch zu sein zu zeigen, würde ich von alleine die Regel oder Sript anzuhängen.

    Aber eventuell sind die Leute "merkbefreit", fast wie im richtigen Leben..... (*Ironie off)

  • Sorry dass ich anscheinend zu blöd dafür bin, aber es hat jeder mal angefangen.

    Ich hoffe ich habe es jetzt richtig, also ich möchte dass es eine Datei in "/home/pi" erstellt, aber das tut es laut dieser configs nicht.

    Code
    pi@raspberrypi:~ $ cat /etc/udev/rules.d/20.rules
    KERNEL=="sd?1", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/usr/local/bin/create-journal-entry add %k"
    KERNEL=="sd?1", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/usr/local/bin/create-journal-entry rem %k"
    pi@raspberrypi:~ $ cat /usr/local/bin/create-journal-entry
    #!/bin/bash
    echo "User=$USER, Parm1=$1 Parm2=$2 Parm3=$3" | systemd-cat -t "thlu:$(basename $0)" -p info
    touch /home/pi/mein.txt
    exit 0
  • Also, um mal das Problem zu beschreiben:

    1. Nachdem die Rules-Datei erstellt oder editiert wurde, wurde entweder der Rechner einmal neu gebootet oder das Regelset mit udevadm control --reload-rules neu geladen
    2. Wenn jetzt das Gerät via USB angeschlossen wird, erfolgt nachgeprüft ein aktueller Journaleintrag, also die "echo"-Zeile im Script wird abgearbeitet
    3. Aber obwohl die "echo"-Zeile ausgeführt wird, wird der touch nicht ausgeführt.

    Wenn das der Sachstand ist, dann wird das ein Path-Problem sein. Wenn man sich den folgenden Unterschied anschaut, bekommt man eine Ahnung über die mögliche Ursache des Problems:

    Code
    # which echo
    /bin/echo
    
    # which touch
    /usr/bin/touch

    Die Lösung könnte also wie folgend sein:

    Code
    /usr/bin/touch /home/pi/mein.txt

    Sorry dass ich anscheinend zu blöd dafür bin, aber es hat jeder mal angefangen.

    Das ist überhaupt kein Problem. Das Problem ist leider manchmal die Erwartungshaltung von irgendwelchen Usern "Hier ist mein Problem, löst das mal" . Ich unterstütze gerne jeden Anfänger, aber nur mit Hilfe zur Selbsthilfe. Und das verlangt konstruktive Mitarbeit dessen, der das Problem hat, und nicht, dass er mit zurückgehaltener Information die Lösung auch noch extra erschwert und mit Händen-in-den-Taschen darauf wartet, dass andere arbeiten. Und wenn jemand hier einen technischen Hinweis gibt und du vestehst das als Anfänger erst mal nicht (was völlig normal und auch ok ist), so solltest Du solche Hinweise nicht einfach übergehen, sondern einfach noch mal nachfragen..... und das ist dann die konstruktive Mitarbeit.... also die Kenntnisse erwerben, irgendwann durch Verstehen der Technik die Probleme selber lösen zu können.

    Einmal editiert, zuletzt von WinterUnit16246 (12. Februar 2019 um 11:08)

  • Das ist überhaupt kein Problem. Das Problem ist leider manchmal die Erwartungshaltung von irgendwelchen Usern "Hier ist mein Problem, löst das mal" . Ich unterstütze gerne jeden Anfänger, aber nur mit Hilfe zur Selbsthilfe. Und das verlangt konstruktive Mitarbeit dessen, der das Problem hat, und nicht, dass er mit zurückgehaltener Information die Lösung auch noch extra erschwert und mit Händen-in-den-Taschen darauf wartet, dass andere arbeiten. Und wenn jemand hier einen technischen Hinweis gibt und du vestehst das als Anfänger erst mal nicht (was völlig normal und auch ok ist), so solltest Du solche Hinweise nicht einfach übergehen, sondern einfach noch mal nachfragen..... und das ist dann die konstruktive Mitarbeit.... also die Kenntnisse erwerben, irgendwann durch Verstehen der Technik die Probleme selber lösen zu können.

    Das ist völlig in Ordnung, bin genau deiner Meinung. aber es ist nicht so das ich hier sitze und auf jede Antwort warte, sondern ich bin viel am googeln und versuche es selbst zu lösen, aber wenn ich nach Tagen selbst kein Erfolg habe dann frag ich doch noch die Experten.

    Ich arbeite 6 Jahre schon mit ubuntu (generell linux) und da ist es mir nicht Welt fremd, aber Ubuntu und raspbian unterscheiden sich doch enorm stelle ich immer mehr fest. Und manchmal fällt mir nur was nicht ein wie z.b. den richtigen Pfad "/usr/bin/touch" zu nehmen.


    Also ich werde es testen und gebe dann feedback.

    Danke schon mal für die Mühen und Hilfen.

  • ..., aber Ubuntu und raspbian unterscheiden sich doch enorm ...

    Wo bzw. wie hast Du diesen "enormen" Unterschied festgestellt?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Ja?

    also, ich wollte es ja schon lange mal loswerden, aber den Hinweis das kernel und subystem fehlen gab ich dir in Antwort #4. ;)

    Das einzige was ich bisher auch nicht wusste, jetzt schon dank gugus und @ThomasL ist, dass die Skripte nach einer gewissen Zeit abgeschossen werden.

    Bei mir beträgt diese Zeit übrigends 180 Sekunden:

    Code: /etc/udev/rules.d/90-usb_runtime_test.rules
    ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="sd*[0-9]", RUN+="/usr/bin/python3 /home/pi/runtime_udev_test.py"
    Code: /home/pi/runtime_udev_test.log
    ...
    Zeit: 20:51:42, Dauer: 179.500815
    Zeit: 20:51:43, Dauer: 180.50319
  • Es gibt viele kleine Unterschiede wie jetzt hier UDEV z.B.

    OK, also doch nur kleine und keine enorme Unterschiede.

    Aber liegt das nicht (auch) an systemd? Welche systemd-Version hast Du mit deinem Ubuntu und welche mit deinem raspbian?

    BTW: Es gibt auch Unterschiede zwischen jessie (systemd 215) und stretch (systemd 232).

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • So, ich versuche das heute definitiv zum letzten mal mit der Udev Regel beim Raspi.

    Ich habe jetzt das Script wie folgt erweitert:

    Es wird lediglich die "echo "User=..." Zeile und das "hello2" ausgegeben, das "hello1" nicht und den "touch" Befehl auch nicht.

    Was mache ich falsch? Script wird auch mit root-Rechten gestartet.

  • So ich habe es jetzt endlich hinbekommen.

    Es muss erst in der Datei:

    ab "KillMode..." auskommentiert werden.

    Danach kann ich dieses erfolgreich ausführen:

    Code
    pi@raspberrypi:~ $ sudo cat /etc/udev/rules.d/5.rules
    KERNEL=="sd?1", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/touch /home/pi/meintextneu.txt"
  • Um das ganze noch zu vervollständigen.

    Daher dass das Script nach ca 3 min wieder beendet wird, starte ich mit Udev ein Dienst und führe somit das Script aus.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!