Raspberry: Speedtest-Skript auch ohne angemeldeten User über SSH ausführen?

Registriert
Juni 2018
Beiträge
56
Hallo zusammen, würde gerne ein Skript auf dem Raspberry Pi 3 B+ laufen lassen, hier mal die Eckdaten:

- Raspberry Pi 3 B+
- Raspbian Stretch Lite als OS
- Pi Hole als DNS-Filter
- Zugriff nur über SSH weil Raspberry im Keller montiert ist und physisch nicht erreichbar ist

Ich möchte gerne einen automatisierten DSL-Speedtest einrichten, den ich alle paar Tage mal abfrage und abrufe.

Dazu habe ich speedtest-cli installiert und folgendes Skript geschrieben:

speedtest.sh:
Code:
echo 'Speedtest wurde gestartet.'
echo 'Wiederholung alle 60 Minuten.'
echo 'Ausgabe in Datei speedtest.csv'
while true
do
        echo 'Messung läuft...'
        speedtest-cli --csv >>speedtest.csv
        echo 'Messung beendet und in speedtest.csv geschrieben.'
        echo '60 Minuten warten...'
        sleep 60m
done

Dann habe ich noch mit chmod die speedtest.sh ausführbar gemacht und wenn ich den Speedtest mit ./speedtest.sh starte, werden auch schön brav die Ergebnisse in die speedtest.csv angehängt, was so aussieht:

speedtest.csv:
1973,DegNet GmbH,Deggendorf,2018-07-10T09:28:01.402563,37.332833135377236,36.718,4592732.313477637,927407.8945575824
1973,DegNet GmbH,Deggendorf,2018-07-10T09:30:05.196577,37.332833135377236,37.323,4659381.489620034,1184711.6166344776
1973,DegNet GmbH,Deggendorf,2018-07-10T09:46:24.026121,37.332833135377236,36.668,4615746.26002875,1120209.1428032396

Nun bleibt noch eine Frage: Wie erreiche ich es, dass das Skript dauerhaft ausgeführt wird, ohne dass ich ständig per Terminal über SSH am Raspberry angemeldet sein muss? Ich hänge ja im Terminal fest und sobald ich die SSH-Sitzung beende ist ja auch das Skript wieder hinfällig und beendet...

Grüße
FalconStar
 

Anhänge

  • Bildschirmfoto 2018-07-10 um 12.02.34.png
    Bildschirmfoto 2018-07-10 um 12.02.34.png
    55 KB · Aufrufe: 428
Jap, Cron nehmen
 
Oder wenn es eher temopär ist (mal für einen Tag) würde ich tmux bevorzugen. Damit kannst du eine virtuelle Session starten, die auch weiter läuft, selbst wenn du die ssh-Verbindung schließt. Beim erneuten Verbinden kannst du dich einfach wieder an die laufende tmux-Session hängen und es ist so wie wenn du die gesammte Zeit eingeloggt gewesen wärst.
 
Du ergänzt die /etc/crontab auf deinem Pi um:

00 * * * * benutzer /pfadzu/speedtest-cli --csv >> /pfadzu/speedtest.csv

Den benutzer auf dein system anpassen.
 
Okay, mache ich, danke. Kann ich den Benutzer "pi" auf dem Raspberry nehmen? Der meldet sich ja standardmäßig nicht an beim Hochfahren. Läuft das dann trotzdem automatisch los bei einem Neustart? Meinetwegen kann der DSL-Speedtest auch dauerhalft laufen, dann ergibt das eine schöne Statistik über mehrere Monate...
 
Ja, du kannst den Benutzer pi verwenden. Bei cron oder systemd.timer geht es darum, welchen Kontext (Umgabungsvariablen, PATH, ...) dein Skript bekommt.

Wie TheCadillacMan geschrieben hat, kannst du die Schleife aus deinem Skript entfernen und die Zeitsteuerung durch Cron/Systemd.timer erledigen lassen. Lies dazu bitte die verlinkten Seiten.
 
Hab jetzt mal folgendes gemacht:

/etc/crontab:
Code:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
00 *    * * *   pi      /usr/share/doc/speedtest-cli --csv >>/home/pi/speedtest.csv
#

Da tut sich aber nix...
Die csv-Datei wird nicht aktualisiert.
Startet der cronjob nur jede volle Stunde?
 
Okay, klingt logisch. Hat aber nicht geklappt weil ich "/usr/share/doc/speedtest-cli" statt "/usr/bin/speedtest-cli" verwendete. Hab's noch auf die 35. Minute umgestellt weil's grad gut gepasst hat und ich nicht bis 00 warten wollte. Jetzt läuft es ;-)

Andere Frage: Wie hole ich mir die csv-Datei, die ich auf dem Raspberry unter /home/pi/ erstellen lasse, auf einen PC in's Netzwerk um die dort mit meiner Tabellenverarbeitung öffnen zu können?
 
Da gibts mehrere Wege. Du könntest den Ordner über Samba freigeben und dann als Windows Netzlaufwerk einbinden. Alternativ per WinSCP über SSH kopieren. Oder per FTP oder ...
 
Feine Sache. Dankeschön.
Mal sehen was mir sonst noch so einfällt mit dem Raspberry :D

PS: Wenn ich crontab editiere, starte ich jedesmal den Raspberry neu. Geht das auch schneller in dem ich den cron Dienst alleine neu starte? Ist das "sudo service cron reload"?
 

Anhänge

  • Bildschirmfoto 2018-07-10 um 19.31.28.png
    Bildschirmfoto 2018-07-10 um 19.31.28.png
    35,4 KB · Aufrufe: 470
Zuletzt bearbeitet:
Im Normalfall ist das nicht notwendig, der cron-dämon überwacht das alleine.
 
Wie gesagt bekommt der dämon Änderungen an der/den crontabs mit. Aber Versuch macht klug:)
 
Zurück
Oben