Cronjob geht.. aber auch nur so zur hälfte | Shellscript

  • Hallo erstmal. Ich bin neu hier im Forum und auch recht neu was Spielereien mit dem PI Skripten und co. angeht.
    Ich versuche aktuell meine Internetgeschwindigkeit zu protokollieren und wollte dies per cron automatisieren.

    Leider funktioniert das nicht ganz da meine Ausgabedatei immer leer bleibt bzw einfach keine neue Zeile dazu geschrieben wird.


    meine speedtest.sh sieht so aus:

    Bash
    #!/bin/sh
    
        echo 'Speedtest wurde gestartet.'
        date
        echo 'Ausgabe in Datei speedtest.csv'
    
    
           echo 'Messung läuft...'
            speedtest-cli --csv --csv-delimiter ';' >>speedtest.csv
           echo 'Messung beendet und in speedtest.csv geschrieben.'


    Mein Crontap (mit sudo contabe):

    Code
    SHELL=/bin/bash
    
    PATH="/usr/local/bin:/usr/bin:/bin"
    
    */5 * * * * /bin/bash /home/pi/speedtest.sh 1> /home/pi/logs_error/logs/speed_log.txt 2> /home/pi/logs_error/error/err.txt

    Die err.txt bleibt leer und die speed_log.txt zeigt mein echo an.

    So weit so gut also denke ich das ich soweit alles richtig gemacht habe, zumindest hoffe ich das :conf:.

    Nur die speedtest.csv bleibt leer.

    wenn ich den Befehl bzw die speedtest.sh direkt ausführe geht alles wie gewünscht.


    Leider konnte ich auch nichts passendes in der Foren- und Internetsuche finden


    MFG :)

  • Ohne jetzt geprüft zu haben, ob Dein shell skript überhaupt funktioniert, nutze zur Ausgabe absolute Pfade, dann steht auch was in den Dateien.

    Ok habe das skript angepasst dennoch bleibt die Ausgabe Datei leer.


    PS: Herzlich willkommen.

    Danke ^^

  • #!/bin/sh

    Die startest das Shellscript mit der Bourne-Shell (wenn sie nicht anders besetzt ist), in der Crontab-Datei soll das mit der Bash gestartet werden.

    Übrigens:

    Warum packst du das nicht in die crontab des Users PI?


    In der System-Crontab haben solche Programme nichts zu suchen.


    Ist das Programm "speedtest-cli" im Pfad in der crontab definiert ist, es wird ohne aufgerufen?

    Selber denken,
    wie kann man nur?

  • Dann rufst du das Shell skript mal direkt auf und guckst, was passiert. Benutzt Du absichtlich /bin/sh ?


    Ach ja, zeig mal das angepasste Skript her.

    ./speedtest.sh: 9: ./speedtest.sh: cannot create /usr/local/bin/speedtest.csv: Permission denied

    Code
       echo 'Messung läuft...'
            speedtest-cli --csv --csv-delimiter ';' >>/usr/local/bin/speedtest.csv
           echo 'Messung beendet und in speedtest.csv geschrieben.'



    Das hieß mal bash aber anscheinend habe ich das beim herrumprobieren gelöscht... habe es wieder in bash geändert.


    Habe es auch wieder in den crontab von pi geschoben. Hatte gehofft das es irgendwie mal funktioniert.

    Die speedtest-cli liegt auch im /user/local/bin/ bei meiner sh Datei.

  • Habe es auch wieder in den crontab von pi geschoben. Hatte gehofft das es irgendwie mal funktioniert.

    Die speedtest-cli liegt auch im /user/local/bin/ bei meiner sh Datei.

    In binären System ist hoffen irgendwie nicht vorhanden.

    Code
    /usr/local/bin/speedtest-cli --csv --csv-delimiter ';' >>/home/pi/speedtest.csv

    Auf die "echo" kannst Du getrost verzichten.


    Edit: Und die obige zeile setzt Du bitte in Deine crontab ein. Ein extra Skript benötigst Du in diesem Fall nicht.

  • Auf die "echo" kannst Du getrost verzichten.

    Die echos waren auch nur um direkt zu sehen ob überhaupt irgendwas passiert.


    Edit: Und die obige zeile setzt Du bitte in Deine crontab ein. Ein extra Skript benötigst Du in diesem Fall nicht.

    Ernsthaft? ^^^^^^^^:D... es kann so einfach sein :wallbash: und ich probiere da seit gestern dran rum ... ich danke dir ;)