[Tipp] Konfiguration testen und automatisch zurücksetzen

Moin,

ich war gerade auf der Suche nach einem Weg den Modus, den man von Ubiquity-Geräten kennt, dass man eine Konfiguration nur testen kann, ohne sie zu speichern und das Gerät sie nach einer gewissen Zeit zurücksetzt, zu emulieren. Ich hab mir da kurz was gebastelt, vielleicht kann es jemand mal brauchen:

echo '*/15 * * * * reboot' >> /usr/lib/micron.d/reboot && /etc/init.d/micron.d restart

Dann kann man Änderungen (wie z. B. das Mesch an einem Gerät auszuschalten oder so) vornehmen, und alles, was nicht mit commit gespeichert wird, wird immer zur nächsten Viertelstunde (also um voll, umd Viertel nach, um halb bzw. um Viertel vor) zurückgesetzt, weil das Gerät dann neu startet.

Grüße
Matthias

D.h. der macht dauerhaft alle 15 Minuten einen Reboot?
Abenteuerlich.

Wie ich finde einfachere Lösung:
(sleep 600;reboot)&

Bootet einmalig nach z.b. 600 Sekunden.

Das funktioniert nicht zuverlässig, wenn die SSH-Verbindung abreißt. Sobald SSH das merkt, killt der den Prozess.

Ich wollte die Anleitung eigentlich im großen Forum einstellen, mal wieder das falsche Forum erwischt: https://forum.freifunk.net/t/tipp-konfiguration-testen-und-automatisch-zuruecksetzen/13592

Nein, das klappt ganz vorzüglich.

Bei „normalen Linux“ hättest du recht - bei Gluon scheint das aber anders zu sein.

Wie gesagt, nur weil es „einmal“ funktioniert hat, heißt das nicht, dass es immer klappt. Es kann sogar sein, dass es mit 95% Wahrscheinlichkeit funktioniert. Es ist aber nicht sicher, dass es klappt.

Dass das unter OpenWRT anders implementiert ist, als unter einem Desktoplinux halte ich für unwahrscheinlich. Auf einem Desktoplinux kann man übrigens das Kommando „at“ nutzen, um zeitgesteuert Befehle abzusetzen.

Wem das reicht, solle das gerne tun. Ich hatte in diesem Fall, wo ich das gerade brauchte, keine Lust da hinzufahren, weil weit weg ;).

Warum sollte das Verhalten von Busybox/ash nicht deterministisch sein?

Es gibt zwei Varianten, die das von dir beobachtete Verhalten, erklären:

  • SSH-Dämon merkt nicht, dass die Verbindung abgebrochen ist, daher läuft das Prozess weiter und rebootet nach 600 Sekunden
  • ash führt bedingt durch das kaufmännische Und einen echten nohup auf den Prozess durch

Letzteres wäre eine saubere Lösung, ersteres nicht.

Da die SSH-Verbindung auch z. B. nicht merkt, wenn das Gerät rebootet und erst nach einem extrem langen Timeout (ich meine so fünf Minuten) zurückgesetzt wird, tippe ich auf Variante eins.

Testen könnte man das z. B., wenn man mal einen Sleep auf eine Stunde stellt, und guckt, ob es dann immer noch funktioniert.

Abbruch ist der „Leichte Fall“
Wenn man sich auslogge kriegt der sshd das in jedem Falle direkt mit da die Verbindung regulär beendet wird. SIGHUP an Children und Pty schliessen.