autoexec.py zum Starten eines Scriptes

  • Moin,

    Ich möchte ein script automatisch starten, wenn Kodi auf einem Raspberry Pi (unter bookworm) gestartet wurde. (ich befürchte, wenn ich das Script vom OS direkt aus starten würde, dann läuft Kodi noch nicht).

    Daher der Versuch, das über die autoexec.py zu machen.

    Das Script selbst würde ich sonst per Hand mit SSH so starten:

    Code
    sudo /dropupl.sh

    Funktioniert das überhaupt oder lassen sich per autoexec.py nur scripte direkt in Kodi starten?

    Den Ordner service.autoexec und die addon.xml für das Addon habe ich schon angelegt sowie das Addon selbst aktiviert, nur die autoexec.py ist noch leer (weil ich nicht weiß, was da rein muss).

  • Alternative könntest du das @reboot per Cron mit Verzögerung einbauen:

    Startscript:

    Code
    Start.sh
    #Wait before Kodi is UP
    sleep 20s
    
    #Script starten
    sudo /dropupl.sh

    den Sleep Befehl kannst du auch direkt im dropupl.sh Script einbauen.

    Kodi lässt du einfach direkt @reboot ohne Verzögerung starten.

    die autoexec.py ist eher zum starten von internen Kodi Geschichten gedacht.

    3x RPI 5 mit Libreelec (Client's), 2x RPI 4 mit Libreelec (Client's), 1x RPI5 als DB Server (MariaDB), PI-Hole auf Raspi OS, 1x Qnap TS-431P2, TS-420 (Backup Nas).

    Einmal editiert, zuletzt von Timmiotool (14. Juni 2024 um 13:19)

  • Du kannst darüber auch Scripte starten lassen:

    Das war ja meine Frage wie das geht. Ein passendes Beispiel gibt es auf der Seite ja nicht. ;)

    Ich habe es jetzt mal mit dem start.sh Script versucht und das in /etc/init.d/ gelegt und per sudo update-rc.d start.sh defaults aktiviert. Läuft aber leider nicht.

  • Das klappt :) Machste am besten mit Crontab...

    cmd-> crontab -e

    dort fügst du folgenden Zeile hinzu:

    @reboot /pfad/zum/Script.sh

    dann STRG + X und J zum speichern.

    das Start Script würde so aussehen:

    Bash
    #!/bin/bash
    #Wait before Kodi is UP
    sleep 20s
    
    #Script starten
    sudo /Pfad/zum/Script.sh
    
    #cmd schließen
    exit

    Nicht vergessen, das .sh Script vorher ausführbar zu machen ;)

    Machste in der CMD mit:

    chmod +x /Pfad/zum/Script.sh

    Alternative kannst du, wie gesagt, in deinem Script den sleep Befehl einbauen und das über den Crontab starten.

    PS: Ich gehe einfach mal davon aus, das du das Standard Raspi OS nutzt, bei anderen Distributionen kann das vorgehen abweichen.

    3x RPI 5 mit Libreelec (Client's), 2x RPI 4 mit Libreelec (Client's), 1x RPI5 als DB Server (MariaDB), PI-Hole auf Raspi OS, 1x Qnap TS-431P2, TS-420 (Backup Nas).

    10 Mal editiert, zuletzt von Timmiotool (14. Juni 2024 um 19:53)

  • Mhhh... jetzt wollte ich per crontab noch einen weiteren Job machen lassen das der Raspi zu einer bestimmten Zeit herunterfährt.

    Das klappt leider nicht.

    Habe jetzt schon etliche Varianten schon durchgespielt. per SSH /usr/sbin/shutdown -h now

    funktioniert (mit oder ohne sudo). Aber im Crontab 30 13 * * * /usr/sbin/shutdown -h now

    passiert nichts. auch mit 20 13 * * *poweroff > /dev/null 2>&1 geht nicht. Ein Plugin mit dem shutdown befehl dort eintragen funktioniert auch nicht (das Plugin selbst fährt aber den Raspi herunter.

    PS: die angegebenen Zeiten sind jetzt nur für den Test. ;)

  • Versuch mal mit: sudo poweroff...

    Ansonsten über ein .sh Script machen, wie oben,spätestens dann sollte es klappen.

    3x RPI 5 mit Libreelec (Client's), 2x RPI 4 mit Libreelec (Client's), 1x RPI5 als DB Server (MariaDB), PI-Hole auf Raspi OS, 1x Qnap TS-431P2, TS-420 (Backup Nas).

  • mit einem .sh Script hatte ich es ja anfangs probiert, damit gehts auch nicht. (mit dem Script selbst aber schon)

    sudo poweroff geht auch nicht.


    Wird eigentlich die Eintragung gleich übernommen oder muss ich immer einen reboot machen?

  • Zitat

    Wird eigentlich die Eintragung gleich übernommen oder muss ich immer einen reboot machen?

    -> STRG + X und speichern im Crontab, dann werden die Änderungen veröffentlicht.

    SH Script:

    Bash
    #!/bin/bash
    
    #shutdown
    sudo shutdown

    als shutdown.sh speichern + ausführbar machen (sudo chmod +x shutdown.sh)

    im Crontab z.B.;

    #jeden Tag 00:00 Uhr
    0 0 * * * /home/pi/SHScripte/shutdown.sh

    PS: Du kannst die .sh in der CMD zum Test manuell starten per:

    Code
    bash shutdown.sh

    wenn der shutdown damit klappt, hast du einfach im Crontab was falsches eingestellt. Bei mir funktioniert das ohne Probleme...

    3x RPI 5 mit Libreelec (Client's), 2x RPI 4 mit Libreelec (Client's), 1x RPI5 als DB Server (MariaDB), PI-Hole auf Raspi OS, 1x Qnap TS-431P2, TS-420 (Backup Nas).

    3 Mal editiert, zuletzt von Timmiotool (16. Juni 2024 um 15:21)

  • So sieht mein Script auch aus.

    down.sh
    #!/bin/bash
    # raspberry Pi herunterfahren
    sudo shutdown


     20 15 * * * /home/pi/down.sh 

    wenn der shutdown damit klappt, hast du einfach im Crontab was falsches eingestellt.

    Dann würde aber das andere Script nicht funktionieren (das habe ich derzeit aber erstmal herausgenommen)

  • Sehe grundsätztlich kein Problem.

    Bei mir klappt im übrigen auch der direkt Befehl im Crontab:

    Code
    #jeden Tag 00:00 Uhr
    0 0 * * * /sbin/shutdown -h now
    
    oder
    
    #jeden Tag 00:00 Uhr
    0 0 * * * sudo systemctl poweroff

    Wenn es so nicht klappt, ist vielleicht schon systemseitig etwas im argen...

    3x RPI 5 mit Libreelec (Client's), 2x RPI 4 mit Libreelec (Client's), 1x RPI5 als DB Server (MariaDB), PI-Hole auf Raspi OS, 1x Qnap TS-431P2, TS-420 (Backup Nas).

  • Mit der Eintragung

    @hourly      sudo systemctl poweroff

    bekomme ich immer diesen Fehler.


    Jun 18 10:23:01 EPG-Ripper cron[474]: Error: bad username; while reading /etc/crontab
    Jun 18 10:23:01 EPG-Ripper cron[474]: (*system*) ERROR (Syntax error, this crontab file will be ignored)

  • Lies bitte mal nach unter man 5 crontab im Abschnitt "Example system cron file". Beim systemweiten crontab ist die Syntax etwas anders, und ein User muss angegeben werden.

    Ich hatte früher auch mal gelernt, dass es im crontab (und an manchen anderen Stellen) empfehlenswert ist, den vollen Pfad zu den Befehlen zu nutzen.

    Kodi 21.1, 17.6, 21.1, 16, 20.5 on Windows 11 Pro, Android 6, Android 12, FireTV Box 2nd Gen, FireTV 4k Max 2nd Gen
    Media on NAS, OpenMediaVault 6 (Debian Linux).

  • Frage: Du nutzt den "root" User (pi) für alles?

    Ich habe die .sh in home\pi\SHcripte abgelegt und kann diese über crontab -e ohne Probleme ansprechen/ausführen.

    Man muss im Crontab (wie buers erwähnte) den User mitgeben sollte er abweichen von pi.

    Geht mit:

    * * * * * USERNAME /pfad/zum/script.sh

    EDIT:

    nachgestellt:

    Crontab -e mit User pi:

    down.sh:

    abgelegt unter:

    RPI fährt wie geplant um 19:05 herunter... (Dauert ca. 1 Minute bis der Shutdown greift).

    Unbedingt dran denken, die .sh auch ausführbar zu machen (sonst passiert nix). Dazu in den Ordner der .sh's wechseln und: chmod +x down.sh Wenn du über eine GUI verfügst, danach zum testen mal n Doppeklick drauf. Sollte dann so aussehen:

    Klick auf Ausführen und der RPI fährt nach ca. 1 Minute herunter (Test für das Script).

    Wenn es so nicht funktioniert, sorry, dann ist das System korrupt oder verkonfiguriert.

    Getestet auf einem aktuellen RaspiOS (bookworm).

    Noch ein Hinweis von meiner Seite:

    Ich persönlich würde Kodi nicht über das RaspiOS installieren sondern Libreelec bevorzugen. Dort läuft alles Out of the Box und du kannst den RPI einfach über die Kodi Gui herunterfahren. Hab das für mich so gelöst, dass der RPI als Slave an einer Master/Slave Steckdose hängt.

    TV AN -> RPI fährt hoch. RPI ausschalten (über die Kodi Gui), TV geht dank CEC mit aus, somit auch die Slave Dose. Ergo alles aus ;)

    3x RPI 5 mit Libreelec (Client's), 2x RPI 4 mit Libreelec (Client's), 1x RPI5 als DB Server (MariaDB), PI-Hole auf Raspi OS, 1x Qnap TS-431P2, TS-420 (Backup Nas).

    14 Mal editiert, zuletzt von Timmiotool (18. Juni 2024 um 19:58)

  • Ich persönlich würde Kodi nicht über das RaspiOS installieren sondern Libreelec bevorzugen.

    Klar, aber damit kann ich dann halt den EPG nicht nach Dropbox hochladen (um ihn auf andere Nutzer zu verteilen) da die entsprechenden Scripte nicht laufen. (die benötigen u.a. apt zum Installieren)

    Habe ich alles schon durch, habe da schon über einen ganzen Monat Arbeit rein gesteckt.

    An dem Raspi hängt eh kein TV dran der soll nur den EPG erzeugen.

    Die crontabs sehen jetzt so aus:


    @reboot     root /home/pi/dropupl.sh
    @hourly     root systemctl poweroff

    Du nutzt den "root" User (pi) für alles?

    Nein, aber mit User pi funktioniert es nicht.

    Ich lasse das jetzt so.


    Vielen Dank für die Hilfe.

  • Es gibt noch die Möglichkeit KODi mit einer MariaDB SQL DB zu betreiben, die Clients darüber anzubinden. Neben der Video, Music DB kann man auch die TV und EPG DB dorthin auslagern. Wäre vielleicht eine Alternative die relative Out of the Box läuft, auch mit Libreelec. Die EPG Daten werden dann direkt vom KODi PVR Plugin in die gemeinsame SQL DB geschrieben und allen Clients verfügbar gemacht. Ist experimentell aber funktioniert. Siehe; https://kodi.wiki/view/Advancedsettings.xml#videolibrary unter Punkt 2.4.14. Hatte das mal ausprobiert. Meine Erfahrung beim EPG ist, das eine gemeinsame Datenquelle keine wirklichen Vorteile bringt. Ich lasse jedem Client deswegen seine eigene lokale EPG Datenbank und diese wird beim KODi start aktualisiert... Video,Music und TV DB dann in einer gemeinsamen SQL.

    3x RPI 5 mit Libreelec (Client's), 2x RPI 4 mit Libreelec (Client's), 1x RPI5 als DB Server (MariaDB), PI-Hole auf Raspi OS, 1x Qnap TS-431P2, TS-420 (Backup Nas).

    2 Mal editiert, zuletzt von Timmiotool (20. Juni 2024 um 20:09)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!