Raspi sendet nach Zeitplan Anfragen an einen Server



Letztens fragte mich jemand, wie man mittels Raspaspberry Pi einem Server Anfragen stellen kann.
Und dies alle zehn Minuten oder vielleicht auch jede Minute.
Derjenige wollte damit regelmäßig eine IP-Adresse in einer Datenbank speichern.

Das ist relativ leicht.

In Linux läuft im Hintergrund ein Programm, das automatisch zu bestimmten Zeiten Anweisungen ausführt.
Es heißt cronjob und arbeitet zusammen mit der Tabelle crontab (griechisch "cronos": die Zeit).
In dieser Tabelle kann man eintragen, wann etwas automatisch ausgeführt werden soll.



Welche Anfrage könnte man an einen Server stellen?

Man könnte den Server "anpingen".
Probieren wir das gleich einmal aus!

Öffne Dein Terminal und gib ein:  ping google.de (oder die IP-Adresse eines beliebigen Computers, der für Dich über Netzwerk erreichbar ist).

Als Reaktion auf Deine Anfrage sendet Dir Google ein Ping zurück und es wird die Zeit ausgegeben, die dafür benötigt wurde sowie die IP-Adresse des angepingten Google-Servers. Dies geht ewig so weiter. Abbrechen kannst Du das Gepinge mit der Tastenkombination: Strg + C.

Wenn Du nur ein Ping hinsenden willst, gib ein: ping -c 1 google.de



Wie kann man das mittels eines cronjobs erledigen lassen?

Zum Editieren der crontab gib ein: crontab -e
Worauf sich er voreigestelle Editor (wahrscheinlich "nano") öffnet.

In der letzten Zeile kannst Du eingeben:        * * * * *  /bin/ping -c 1 192.168.178.50
... um jede Minute dem Rechner mit der IP 192.168.178.50 einen Ping zu senden.

5 Sternchen bedeuten: jede Minute.  Zwischen jedem Stern befindet sich ein Leerzeichen.

Im Editor nano kann man speichern mit der Tastenkombination Strg + O und verlassen kann man ihn mit Strg + X.

Die 5 Sternchen stehen für:
Minute (0...59)  |  Stunde (0..23)  | Tag im Monat (0...31)  |  Kalendermonat (1..12)  |  Wochentag (1...7)

Willst Du jede Stunde einen Ping senden, sähe der Befehl so aus: 0 * * * *  /bin/ping -c 1 192.168.178.50

Willst Du jeden Tag um 0.30h einen Ping senden, sähe der Befehl so aus: 30 0 * * *  /bin/ping -c 1 192.168.178.50

Willst Du alle 10min einen Ping senden, sähe der Befehl so aus: */10 * * * *  /bin/ping -c 1 192.168.178.50