Python-Script austomatisch beim Einlegen einer SD-Karte starten

  • Liebes Forum,
    ich suche eine Möglichkeit, beim Einlegen einer SD-Karte in einen an den Raspberry angeschlossenen SD-Kartenleser ein bestimmtes Python-Script automatisch ausführen zu lassen.
    Konkret enthält die SD-Karte Fotos meiner Urlaubs-Kamera, die dann automatisch beim Einlegen der SD-Karte auf eine an den RasPi angeschlossene Festplatte kopiert werden sollen. Dies soll natürlich möglichst "headless" geschehen.
    Mal ganz unabhängig vom Script an sich: wie startet man es automatisch beim Einlegen einer SD-Karte? :helpnew:

    Danke schon mal im voraus!

  • Python-Script austomatisch beim Einlegen einer SD-Karte starten? Schau mal ob du hier fündig wirst!

  • Ganz so trivial stellt sich das Problem wie meistens nun doch nicht dar - meine UDEV-Regel will nicht greifen. Der Cardreader ist an den RasPi angeschlossen, die 64GB-SD-Karte steckt drin und ist als sda1 gemountet.

    Ich habe eine Datei /etc/udev/rules.d/99-sdcard.rules erstellt:

    Code
    ACTION=="add", KERNEL=="sd*", ATTRS{model}=="Storage Device  ", SYMLINK+="usbsd%n", RUN+="/home/pi/sdcopy.sh"

    Das zugehörige Script sdcopy.sh:

    Bash
    #!/bin/bash
    echo "Funktioniert"

    Leider kann ich das "Funktioniert" trotz vieler Versuche mit den udev-Regeln und natürlich Neueinlesen der Einstellungen mit

    Code
    sudo udevadm control --reload-rules


    nicht am Screen sehen, wenn ich dann die SD-Karte aus dem Reader herausziehe und wieder reinstecke...
    Hat jemand noch eine guten Idee?

  • Mit folgenden Einstellungen hat es nun doch noch geklappt:

    Code
    ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="048d", SYMLINK+="usbsd%n", RUN+="/home/pi/sdcopy/sdcopy.sh

    Das Script sdcopy.sh sieht so aus:

    Nun kommt lediglich auf dem RasPi-Desktop beim mehrmaligen Ein- und Ausstecken der Karte eine Fehlermeldung, das "nur Root sda1 mounten kann...". Der Kopiervorgang wird aber anstandslos durchgeführt.

  • Bei deinem ersten Versuch kann er kein echo ausgeben - wohin auch? Das Script wird nicht über dein tty ausgeführt..

    Bei deinem jetzigen Script und udev Regel hast du aber auch noch ein paar Fehler. Zum einen fragst du nur die idVendor ab, die aber vom Kartenleser ist nicht von der SD. Und zum anderen erstellst du einen random Symlink usbsd%n , besser wäre immer ein fester/selber und den dann auch in deinem Copy Script zu nutzen. Es fehlt auch noch eine abschließende " in der Rule..

    In meinem Beispiel wurde das Script auch mit /bin/bash im RUN+ aufgerufen - das ist nach meinen Tests besser und Fehlerfreier.

    sudo brauchst du in dem Script ebenfalls nicht da das Script bereits mit root Rechten ausgeführt wird


    PS: Benutzt am besten lsusb -v anstelle von udevadm

Jetzt mitmachen!

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