PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kleine isdn einwahlscript hilfe....



BSM
29-04-2002, 18:09
hallo leute,

ich kenne mich noch nicht so viel mit bash programmierung aus, kann aber ein bisschen C (zwar unter windows, es ähnelt aber doch, oder?).

also meine frage:

ich möchte gerne ein kleines einwahl script programmieren, dass:

1. sich versucht mit dem befehl "isdnctrl dial ippp0" einzuwählen versucht,

2. dann einen ping rausschickt an irgendeinen bekannten server

if nach X sekunden nichts vom ping kommt then soll er wieder von vorne anfangen

else soll er sich einfach schliessen

die suchfunktion läuft nicht ganz rund, oder ist das nur bei mir so?

danke, Robert

Harry
29-04-2002, 19:22
Hallo Robert,

folgendes Shell-Skript (bash) sollte Dir helfen:



#!/bin/bash

# --- Die folgenden Variablen koennen angepasst werden ---
MAXTRIES=5
INTERFACE=ippp0
PINGHOST=<Ein-beliebiger-Internet-Host_oder_eine-IP-Adresse>
DEBUG=1

# --- Ab hier nix aendern ---
DECISION="TRUE"
TRY=1

while [ $DECISION = "TRUE" ]; do

if [ $DEBUG -eq 1 ]; then
echo Einwahlversuch \#$TRY erfolgt ...
/usr/sbin/isdnctrl dial $INTERFACE
/bin/ping -c 1 $PINGHOST
else
/usr/sbin/isdnctrl dial $INTERFACE 2> /dev/null
/bin/ping -c 1 $PINGHOST 2> /dev/null
fi

TRY=`expr $TRY + 1`

if [ $? -eq 0 -o $TRY -gt $MAXTRIES ]; then
DECISION="FALSE"
fi

done


Für die Ausführung des Skriptes benötigst Du lesenden und schreibenden Zugriff auf das Device /dev/ippp0; also entweder führst Du das Skript als root aus oder Du nimmst den gewünschten User in eine separate Gruppe auf (bspw. uucp), und räumst dieser Gruppe Lese- und Schreibrechte auf das Device ein.

Ahja, dieses Skript benötigt die Berechtigung zum Lesen und Ausführen - aber ich denke, das war eh klar :D

Harry

BSM
29-04-2002, 20:18
hmm.... ja das klingt logisch, nur der ping.

wenn er reinkommt klappt auch alles richtig weil er den host anpingen kann, nur wenn er nicht ins netz kommt (z.b. weil ich das passwort verändert habe :p ) , bricht das ganze mit einem timeout des pinges ab. er soll aber wenn der ping nach z.b. 5sekunden kein resultat liefert , einen neuaufbau machen.

hoffe es klappt

MfG Robert

anda_skoa
29-04-2002, 22:27
Vielleicht eine blöde Frage, aber warum verwendetes du kein dial on demand?

Ciao,
_

BSM
30-04-2002, 13:21
also ich erklärs mal:

mit T-ISDN XXL kann man sonntatgs (und feiertags. z.b. morgen :D ) kostenlos telefonieren. mit lokalen einwahlnummern (die noch aus der zeit stammen wo man damit zum ortstarif surfen konnte :D )einiger provider innerhalb deutschlands kann man dies anderweitig verwenden, also zum internet surfen. nach 9:00 UHR morgens sind diese nummern allerdings dicht, weil ich ja nicht der einzige bin der dies kennt. um diese zeit braucht man glück oder mehrere einwahlversuche um einen freien platz zu bekommen. manchmal braucht man bis zu 20x. da ich keine grosse lust habe es 20x per ahnd zu versuchen, möchte ich dies genre ein script erledigen lassen.

wenn ihr jetzt mit <<DSL-Flat kostet sau wenig>> kommt, muss ich dies leider verneinen, da ich nur ein armer schüler bin dessen eltern ihm schon den hals umdrehen wenn ich sie danach frage.

ich hoffe das war ausführlich genug.

hat noch irgendwer eine idee für das script?

danke und MfG Robert

anda_skoa
30-04-2002, 14:53
Hmm, ich hatte bisher immer nur eine Nummer, wenn ich ISDN eingerichtet habe.
Darum weiß ich leider nicht, wie leicht soch da die Nummer wechseln läßt.
Aber das mehrmals versuchen hat bei mir das ISDN subsystem immer selber gemacht.

Sobald ein Paket über das zugehörige Interface ging, wurde gewählt und zwar sooft, bis die Verbindung stand.

Das war mit eine SuSE6.3 und einem aktuellen Debian so, darum dachte ich, das ist das normale Verhalten der Linux ISDN tools.

Ciao,
_

Harry
30-04-2002, 21:59
Hallo Robert,

wenn Du einen Timeout beim ping bekommst weil Du ein falsches Paßwort gewählt hast, dann nützt Dir auch ein erneuter Verbindungsaufbau nach 5 Sekunden nichts, denn dann würdest Du ja wieder nicht ins Netz kommen.

Ich glaube, ich verstehe Dein Problem jetzt nicht ganz?!

Wo klemmt's denn genau?

Wenn Du die Anzahl der Einwahlversuche nicht skriptgestützt ausführen möchtest, dann kannst Du halt Dein ippp0 über "isdnctrl dialmax ippp0 5" direkt mitteilen, dass er 5x eine Einwahl versuchen soll, bis er aufgibt.

In Verbindung mit dem Skript wären das jedoch 25 Einwahlversuche (5x5).

Vielleicht hilft Dir die Manpage von isdnctrl auch weiter:


isdnctrl(8) Linux System Administration isdnctrl(8)

dialmax name [num]
Set the number of dial attempts for ISDN interface
name to num. If dialing, each phone number is
tried this many times before giving up. If num is
omitted isdnctrl prints the current setting for
interface name.


Aber wie anda_skoa schon sagte: Das ist das Default-Verhalten von isdn4linux (je nachdem, wie hoch der Parameter [num] eingestellt ist).

Harry

BSM
01-05-2002, 10:40
also das mit dem flaschen passwort eingeben war nur ein beispiel. genauso hätte auf der anderen seite besetzt sein können.

aber das mit dem dialmax das ist eine gute idee. ich benutzte kinternet um mich von kde aus einzuwählen. dieses besitzt aber von haus aus keine wahlwiederholung, was der befehl dialmax aber bewirken sollte oder?

danke an alle die mir bisher versucht haben zu helfen :p

MfG Robert

Harry
01-05-2002, 11:30
Hallo Robert,

die Option dialmax wird sicherlich mit einem Wert vorbelegt sein; dies hängt von den Voreinstellungen Deiner Distri ab.
Die Voreinstellung kannst Du einfach mit dem Kommando "isdnctrl list ippp0" nachprüfen.

Welche Distri verwendest Du denn?

Harry

BSM
01-05-2002, 13:17
ich verwende eine SuSE 7.3 . das hatte ich auch in der signatur stehen, aber irgendwie isses mal abhanden gekommen .... :rolleyes:

also ich hab die dialmax jetzt mal auf 20 gesetzt, ich werds mal nachher um 20:00Uhr, zur 'Rush Hour' mal testen. :D

achja, der standart wert für die dialmax ist 1

MfG Robert