l2tp Tester gesucht!

A. Schulze sca at andreasschulze.de
Di Mär 8 11:47:25 CET 2016


Christian Dresel:

> /etc/init.d/tunneldigger start
> l2tunnel on
>
> nicht stört und im Falle eine Trennung den Tunnel neu aufbaut, ist mein
> Vorschlag ein Script das die 2 Befehle ausführt und alle 5 Minuten über
> nen Cron getriggert wird. Ich bau das eben zusammen und teste dann mal.

Sorry, dass ich mich einmische.
Ich halte solche "stumpf alle 5 Minuten draufhauen" Methoden für suboptimal.

Wenn es gelingt, den Prozess so zu starten, dass er sich nicht in den  
Hintergrund verabschiedet,
kann man init benutzen, um den Dienst am Laufen zu halten.

Es ist deutlich effizienter, zu monitoren, dass ob sich ein Dienst  
beendet hat, als regelmäßig
Ressourcen für einen eventuellen Neustart aufzuwenden. So minimiert  
man zusätzlich die Downtime.
Beim Ansatz "alle 5 Minuten" können halt 5 Minuten Ausfall entstehen...


Beispiel: der (mehr oder wenig sinnfreie) Dienst "sleep"
Eintrag in der /etc/inittab:
    ::respawn:/bin/sleep 53

Beschreibung: https://git.busybox.net/busybox/tree/examples/inittab

/bin/sleep läuft (hier für genau 53 Sekunden) und beendet sich dann.
*sofort* danach wird dies von init bemerkt und ein neuer Prozess gestartet.

Die Herausforderung ist also, Prozesse, die als Daemon laufen, so umzustellen,
dass sich gerade nicht in den Hintergrund verabschieden und sich  
tatsächlich beenden,
wenn ein Fehler aufgetreten ist ( z.B. die Verbindung weg ist )

Ein Startscript für einen richtigen Dienst dieht dann etwas komplexer aus.
wobei das hier immernoch einfach ist.

/usr/bin/our_running_service:
      #!/bin/sh
      exec < /dev/null
      exec 2>&1
      # optional: Shellcode zur Initialisierung des Dienstes
      exec env - /usr/sbin/service --no-daemon


Dieses Script schließt STDIN und leitet alle Ausgaben von STDERR auf  
STDOUT um.
Abschließend ersetzt das exec die laufende Shell durch den zu  
startenden Dienst.
Dabei wird dem Dienst noch das Environment geleert.
Wenn dieser sich beendet, kehrt das Script zum Aufrufer zurück und der  
Supervisor startet den Job neu.

Vorteil: Dienst läuft, ohne Unterprechung
Nachteil: Dienst muss dafür geeignet sein.

Das ganze funktioniert. Auf OpenWRT als auch im Enterprise ISP  
Betrieb. (wo ich mich tagsüber betätige)
Bei Interesse helfe ich gern..

Andreas





Mehr Informationen über die Mailingliste franken-dev