PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : umfangreicheres redial-script



Tommy_20
18-03-2002, 07:48
ich kenn mich leider nicht wirklich mit scripten aus und hoffe hier auf hilfe ;)

also das script sollte folgendes machen:

eine ip im internet pingen und wenn das ziel nicht erreicht werden kann, ein telnet auf das ADSL modem, das modem neu starten und dann neu einwählen ins internet ;)


das problem bisher ist, dass wenn die leitung tot ist, man das modem manuel neu starten muss (kenn den befehl dafür, also das ist kein problem) oder den router neu starten muss (sonst wählt er sich nicht mehr ein, weil er glaubt, die verbindung besteht noch).

Es wäre dringend, da die derzeitige lösung (ein fli4-router) nicht brauchbar funktioniert, wird der Router auf Suse 7.2 aufgesetzt (dort gibt es aber die vorher beschriebenen probleme).

theonlychriss
20-03-2002, 08:29
Hier ein von mir etwas abgeändertes Script von cyrip:
----------------------
#!/bin/bash

# Hier werden die Server festgelegt, die in dieser Reihenfolge gepingt werden
# sollen. Es wird nur solange durchlaufen, bis ein PING erfolgreich war.
server1="www.zdnet.de"
server2="www.altavista.de"
server3="www.netsurf.de"
server4="www.hirntot.de"
server5="www.t-online.de"

# Hier werden die Optionen festgelegt, mit denen Ping gestartet wird
# Optionen für Ping
# -c: Anzahl der Ping-Echos
# -w: Max. Wartezeit auf Antwort
# -q: Bloss keine Meldungen ausgeben
# -s: Paketgroesse
pingopts="-c 1 -w 5 -s 56 -q"

# kosmetik (Bloss keine Meldungen ausgeben)
schwarzesloch=">/dev/null 2>&1"
# schwarzesloch=">>/dev/tty1" # zum Debuggen

# Befehl zum trennen und neuverbinden (bei autotrennung des providers
# ist es wichtig, dass man selbst noch mal trennen muss!
# schema: wiedereinwahl="(<trennen> && <verbinden>)"
wiedereinwahl="/etc/init.d/./internet_abwahl && /etc/init.d/./internet_einwahl"

# Endlosschleife zum endlosen online sein.
# Bei einem erfolgeichen Ping (einer reicht), wird gleich abgebrochen
# und in 2 Minuten wieder gestartet. Bei nicht erfolgreicher Einwahl
# bricht das Script mit Fehler ab.
while true
do
sleep 1m
eval "ping $pingopts $server1 $schwarzesloch" || \
eval "ping $pingopts $server2 $schwarzesloch" || \
eval "ping $pingopts $server3 $schwarzesloch" || \
eval "ping $pingopts $server4 $schwarzesloch" || \
eval "ping $pingopts $server5 $schwarzesloch" || \
eval "($wiedereinwahl)" || \
sleep 5m
continue
sleep 5m
done
echo "Kann rcpppoed nicht erfolgreich ausführen! ABBRUCH!!!" 1>&2
exit 1
--------------------------

Dann brauchst Du noch die zwei Ein-/und Abwahlscripte und fertig ab. Funktioniert einwandfrei und nach Trannung bist Du nach spätestens 5 Minuten wieder online. Falls Du schneller wieder online sein möchtest, oder nicht (wie ich) evtl etwas länger auf eine freie Leitung warten mußt, dann frag' doch mal cyrip bzw. schau im Forum. Irgendwo könnte sein sein Script auch noch stehen.

cyrip
20-03-2002, 09:17
alle die rp-pppoe installiert haben und die scripte "adsl-start" und "adsl-stop" für einwahl und trennung benutzen müssen nur die variable wiedereinwahl so ändern:

wiedereinwahl=(adsl-stop && adsl-start)

bei eventuellen problemen, weil die verbindung etwas zeit braucht zum trennen:

wiedereinwahl=(adsl-stop && sleep 5s && adsl-start)

Tommy_20
20-03-2002, 09:40
das sollte genau das sein was ich brauche :-) DANKE!

nur der letzte teil sollte etwas anders sein, und zwar wenn die einwahl nicht klappt, soll er ein script zum restart vom adsl-modem ausführen (hab das script schon und es geht) und dann nochmal einwählen probieren!

wie muss ich ihm das dann schreiben? einfach statt dem echo den befehl zum restart, ein sleep (30 sekunden sollten reichen) und dann wieder neu einwählen oder?

Tommy_20
20-03-2002, 09:58
also so sieht mein script jetzt aus (hab es etwas angepasst auf AT & Adsl ;))

#############
#!/bin/bash

# Hier werden die Server festgelegt, die in dieser Reihenfolge gepingt werden
# sollen. Es wird nur solange durchlaufen, bis ein PING erfolgreich war.
server1="www.zdnet.de"
server2="www.altavista.de"
server3="gd.tuwien.ac.at"
server4="212.88.160.2"
server5="212.88.160.5"

# Hier werden die Optionen festgelegt, mit denen Ping gestartet wird
# Optionen für Ping
# -c: Anzahl der Ping-Echos
# -w: Max. Wartezeit auf Antwort
# -q: Bloss keine Meldungen ausgeben
# -s: Paketgroesse
pingopts="-c 1 -w 5 -s 56 -q"

# kosmetik (Bloss keine Meldungen ausgeben)
schwarzesloch=">/dev/null 2>&1"
# schwarzesloch=">>/dev/tty1" # zum Debuggen

# Befehl zum trennen und neuverbinden (bei autotrennung des providers
# ist es wichtig, dass man selbst noch mal trennen muss!
# schema: wiedereinwahl="(<trennen> && <verbinden> )"
wiedereinwahl="/etc/rc.config.d/adslstop && /etc/rc.config.d/adslstart"

# Endlosschleife zum endlosen online sein.
# Bei einem erfolgeichen Ping (einer reicht), wird gleich abgebrochen
# und in 2 Minuten wieder gestartet. Bei nicht erfolgreicher Einwahl
# bricht das Script mit Fehler ab.
while true
do
sleep 1m
eval "ping $pingopts $server1 $schwarzesloch" || \
eval "ping $pingopts $server2 $schwarzesloch" || \
eval "ping $pingopts $server3 $schwarzesloch" || \
eval "ping $pingopts $server4 $schwarzesloch" || \
eval "ping $pingopts $server5 $schwarzesloch" || \
eval "($wiedereinwahl)" || \
sleep 5m
continue
sleep 5m
done
echo "Kann ADSL nicht erfolgreich ausführen! ABBRUCH!!!" 1>&2
exit 1
########

das problem jetzt ist, dass er sich neu einwählt, obwohl die oben angegebenen adressen pingbar sind! :(

cyrip
20-03-2002, 16:03
hi nochmal....

also ich weiss nicht warum es sich mittlerweile schon so geändert hat, aber das script, wie es noch auf meinem rechner ist, sieht in der wiederwahlroutine so aus:



wiedereinwahl="<trennenbefehl> $schwarzesloch && <verbindenbefehl> start $schwarzesloch"

while true
do
eval "ping $pingopts $server1 $schwarzesloch" || \
eval "ping $pingopts $server2 $schwarzesloch" || \
eval "ping $pingopts $server3 $schwarzesloch" || \
eval "ping $pingopts $server4 $schwarzesloch" || \
eval "ping $pingopts $server5 $schwarzesloch" || \
eval "($wiederweinwahl)" || \
break
sleep 30s
done
echo "Kann rcpppoed nicht erfolgreich ausführen! ABBRUCH!!!" 1>&2
exit 1


wieviele sleeps dadrin sind ist mir egal, aber das break ist wichtig, damit er eben nicht trennt bei einem erfolgreichem ping...

theonlychriss
21-03-2002, 06:17
Ja, ich weiß dass das break wichtig ist, aber wie ich schonmal sagte, habe ich es rausnehmen müssen, denn wenn keine Verbindung nach der Abwahl zur Verfügung steht, bricht er ja ab, und dann war's das. Bei mir ist das die Lösung, die ich brauche, aber jeder Jeck ist anders ;)

Gruß
Chriss

Tommy_20
22-03-2002, 07:27
das script trennt auch mit den neuen einstellungen obwohl ein ping durchkommen muss (manuell sind die ziele sekunden bevor das script aufgerufen wird noch problemlos pingbar).

das script sollte aber wie gesagt nur trennen, wenn wirklich kein ping mehr nach draussen durchgeht :(

cyrip
22-03-2002, 11:10
ich kann nur sagen, dass das script, seit ich es geschrieben habe, bei mir läuft ;)

und: siehe signatur

onetwo
24-03-2002, 11:16
#!/usr/bin/perl

while (1) {
if (-e '/var/run/ppp0.pid'){
sleep 60;
}
else { system "/etc/rc.config.d/adsl start";}}


schlank und schnell ...

the_midget
25-03-2002, 06:23
hallo zusammen,

ich hab mal garkeine ahnung :) aber in etwa das gleiche problem,
ich hab eine isdn flatrate und werde von meinem provider nach ca. 6st gekickt.
ich wähle mich mit "isdnctrl dial ippp0" ins netz, kann man das auch mit diesem script in den griff bekomen?

brech mir hier echt ein ab ..... welcher kluge kopf kann helfen ??

vielen dank
bye_the_midget