Hi weazel,
das folgende Verfahren habe ich mir überlegt (alles als root):
zuerst habe ich ein neues Verzeichnis in /etc/rc.d/scripts.d angelegt und dort einen kurzes Skript adsl_connect plaziert, welches adsl-start aufruft:
#!/bin/sh
/usr/sbin/adsl-start &
In /etc/rc.d/rc.local (das ist das letzte der Skripten, die beim Hochfahren ausgeführt werden) habe ich dann noch zwei Zeilen hinzugefügt:
#own startup scripts
/etc/rc.d/scripts.d/adsl_connect
rc.local wird ja als letztes beim Start nach allen anderen Skripten ausgeführt...so wird versucht beim Starten geich eine Verbindung aufzubauen...
Mit crontab -l aktuelle crontab anzeigen lassen und mit crontab -e die crontab fuer root editiert und folgende Zeile eingefügt:
* * * * * root [ -x /usr/sbin/cronloop ] && /usr/sbin/cronloop Every_minute
Diese Zeile bewirkt, daß alle Skripten, die in /etc/cron.d/Every_minute stehen, jede Minute ausgeführt werden, anschliessend wurde noch das Verzeichnis
Every_minute in /etc/cron.d angelegt.
Dann wurde das Skript qdsl_always_on erstellt:
#!/bin/sh
if ! test -e /var/run/adsl.pid.pppoe
then
echo Q-DSL connection broken...trying to reconnect...
/usr/sbin/adsl-start &
sleep 20s
if test -e /var/run/adsl.pid.pppoe
then
echo Q-DSL connection established...
else
echo Q-DSL connection could not be established...
fi
fi
Anschließend packt man qdsl_always_on in das Verzeichnis /etc/cron.d/scripts.d und trägt in /etc/cron.d/Every_minute einen Link auf qdsl_always_on in /etc/cron.d/scripts.d ein mit
ln -s /etc/cron.d/scripts.d/qdsl_always_on /etc/cron.d/Every_minute/qdsl_always_on
und fertig ist das Ganze.
Noch zur Erklärung...das Skript qdsl_always on macht folgendes...in der ersten if Schleife
if ! test -e /var/run/adsl.pid.pppoe
wird abgefragt, ob das File adsl.pid.pppoe in /var/run nicht (Negierung durch "!") existiert. Falls ja, wird adsl-start in /usr/sbin aufgerufen, dann 20 Sekunden gewartet bis die Verbindung evtl. hergestellt ist und dann nochmals gefragt, dieses mal ob das file
adsl.pid.pppoe in /var/run existiert und wenn ja, gibts eine Erfolgsmeldung, daß die Verbindung hergestellt werden konnte, wenn nein, gibts auch eine Meldung. Da das im crontab eingetragen ist, wird jetzt jede Minute überprüft, ob eine Verbindung besteht und wenn nein, dann wird versucht eine zu starten.
Das Skript adsl-start bzw. nachher adsl-connect von rp-pppoe-3.3 legt in /var/run verschiedene Dateien ab, wenn eine Verbindung besteht, u.a. eben auch adsl.pid.pppoe und das macht man sich zunutze...
so long
JB
P.S.: alle Arbeiten sind als root auszuführen, da auch rp-pppoe-3.3 nur unter root ausgeführt werden kann. Des weiteren muß man natürlich alle Skripten nach dem Editieren mit chmod 744 für root executable machen...
P.P.S.: Man kann die echo Ausgaben in qdsl_always_on auch rausnehmen, sonst bekommt man die per Mail die ganze Zeit zugeschickt. Eigentlich wurden diese nur eingebaut, um zu sehen, ob das Skript das macht, was es soll