Raspberry Pi Autostart nach Netzwerk herstellung?
Hallo ich habe eine .sh die ich ausführen will an besten in tty2 beim Startup aber se soll so viel Verzögerung haben bis eine Internetverbindung besteht
(also mus auch automatisch eingeloggt werden)
2 Antworten
Du könntest einen @reboot cronjob erstellen, welcher nach dem Start des Systems läuft. Innerhalb des Jobs könntest du mit curl in einer schleife so lange google aufrufen, bis du einen 200 code zurückbekommst. Ab diesen Zeitpunkt funktioniert das internet und du kannst das ausführen was du möchtest.
Dieser Cronjob, würde für jeden Start des Systems gelten. Könnte also passen. Du kannst natürlich auch anstatt eines scripts, ein Ansible Playbook gegen localhost laufen lassen.
Nein, nicht egal. Manche Anbieter unterdrücken das Ping-Echo.
Ist der Kernel-Parameter net.ipv4.icmp_echo_ignore_all auf 1 oder die iptables-Einstellung echo-request uf DROP gesetzt verhindert die Ping-Antwort.
Mir klar, in diesem Fall aber nicht:
ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: icmp_seq=0 ttl=58 time=42.839 ms
64 bytes from 1.1.1.1: icmp_seq=1 ttl=58 time=21.092 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=58 time=25.473 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=58 time=48.546 ms
ja aber die script muss erstmal ins tty3 und sich da "einloggen"
Kannst du das näher ausführen? tty ist ja auf dem System und nicht remote.
Man kann Warteschleifen in Scripten Einsetzen. Diese mit Cronjobs Verbinden und damit wäre das Problem Vom Tisch.
https://www.linux-community.de/ausgaben/linuxuser/2015/06/kreislauf/3/
Für die Laien unter uns der Befehl in der Shelll dazu ist
wait
man wait
Damit kann man näheres in den Man pages dazu lesen.
Verfeinern kann man das mit waitpid oder waitid
Für einen Laien wäre zum anfangen sicherlich Ansible leichter, als direkt so ein spaggeticode schreiben zu müssen :D
Oftmals ist der Mehraufwand besser als wenn man mit weniger mehr Fehler macht.
Setze doch einen entsprechenden delay mit anachron bevor du nach dem Boot die sh ausführst.
Oder aber einen delay in das skript
Hardgecodete delays finde ich immer etwas dirty. Wenn mal doch etwas länger dauert hast du hier die Arschkarte. Wenn alles schneller geht ist dauert es länger, bis das Script läuft.
Einfache Möglichkeit, mit curl nach Internet zu prüfen z. B. solange ne Schleife zu gehen, bis 200 zurück kommt oder mit ping 1.1.1.1 anpingen bis eine Antwort kommt.
Wäre aus meiner Sicht die elegantere Lösung und wäre Unabhängig von den Umweltfaktoren.
Genauso gut einen Ping nach 8.8.4.4 abwerfen und nach 0 oder 100% packet loss abfragen.