Ich beschreibe hier meine Erfahrung hinsichtlich des Zugangs zur Hit von einem Linux Rechner über pppd/chat mit Modem. Mit eventuell kleineren Änderungen werden die Skripte auch für ISDN Zugang benutzbar sein.
Als Alternative zu dem beschriebenen Weg kommt dip
in Betracht. Wie man mit dip mit der
Hit Kontakt aufnimmt, ist in der Internet-Fibel auf
der Webseite des Handshake
beschrieben (geringfügig
veraltet hinsichtlich Telefonnummer und "slip" statt
"ppp" Benutzung).
Als Erweiterung der Basisverbindung über
pppd kann man an diald denken (automatischer
Abbau länger unbenutzter Verbindungen und automatischer
Wiederaufbau bei Bedarf). Ich selbst habe keine Erfahrung
mit diald.
Linux Rechner können PPP-Verbindungen über den PPP-Demon, pppd,
aufbauen. pppd initialisiert das Modem (die ISDN-Karte),
baut die Verbindung auf und veranlasst den Kern im Erfolgsfall
eine IP und/oder IPX Verbindung zum PPP-Partner aufzubauen.
Auf Wunsch wird eine Default-Route zu dem PPP-Partner eingerichtet:
alle Pakete an Rechner, für die keine explizite Route bekannt
ist, werden über diese Route weitergeleitet. Das ist
sinnvoll für Internetbenutzung.
Für die Details der Modem-Initialisierung und des Anmeldens
beim Online Dienstleister bedient sich pppd
eines externen Shell-Kommandos. Meistens wird in diesem
Kommando das Programm chat benutzt.
chat wird kontrolliert durch ein chat
Skript. Ein solches Skript besteht im wesentlichen aus
einer Folge von "warte auf/sende" Sequenzen, etwa in
der Form warte auf ogin: sende
USER.
Nachdem die Verbindung aufgebaut ist, wird sie von pppd
überwacht (genauer: offengehalten). Wenn der pppd
Prozess beendet wird, wird die Verbindung abgebaut, das Modem
legt auf. Geht umgekehrt die Verbindung verloren, etwa
weil der Partner auflegt, beendet sich pppd
normalerweise (sofern er nicht durch eine Option angewiesen wurde,
es nicht zu tun).
Der Normalablauf für den Kontakt mit der Hit hat also die Schritte:
pppd zum Verbindungsaufbau mit der Hit
pppd Prozesses, die Verbindung
wird abgebaut.
up und down Skripte.
pppd und chat sind in der
Linux-Dokumentation (man) detailliert beschrieben.
up Skript -- Verbindungsaufbau zur Hit
#! /bin/bash
#CHATDEBUG="-V -v"
#PPPDEBUG="debug"
TTY=`tty`
CHAT=~/scripts/handshake.chat
/usr/sbin/pppd /dev/modem 115200 \
lock modem defaultroute crtscts -ipx-protocol bsdcomp 12 \
connect "/usr/sbin/chat $CHATDEBUG -f $CHAT 2>$TTY"
ist ein einfaches Skript zum Verbindungsaufbau mit der
Hit. Es setzt voraus, dass /dev/modem ein symbolischer
Link auf Eurer Modem/ISDN-Device ist und dass das
chat Skript in
~/scripts/handshake.chat liegt.
Beides kann natürlich geändert werden.
Bei Problemen könnt Ihr die Zeilen mit den Debug-Definitionen
durch Löschen des Kommentarzeichens aktivieren.
pppd protokolliert in diesem Fall über syslog,
d.h. Ihr findet die Meldungen in /var/log/messages.
Die chat Meldungen sollten nach /var/log/messages
und das Terminal gehen.
chat Skript -- Details der Anmeldung mit der HitABORT BUSY ABORT "NO DIALTONE" ABORT "NO CARRIER" ABORT ERROR REPORT CONNECT TIMEOUT 5 "" ATZ OK ATDT0192378 TIMEOUT 60 CONNECT "" TIMEOUT 15 ogin:--ogin: ppp-user word: passwordist ein
chat Skript das, abgelegt unter
~/scripts/handshake.chat, im obigen up
Skript benutzt werden kann.
Die ABORT Zeilen definieren Fehlersituationen:
sollte das Modem BUSY bis ERROR melden, wird
sofort mit Fehler abgebrochen.
Die REPORT Zeile legt fest, dass wir die connect-Information
sehen möchten. Die TIMEOUT Zeilen verändern den
Timeout, mit dem auf Antworten gewartet wird. Die
übrigen Zeilen sind die "Warte auf/Sende" Paare.
Die ATZ wartet auf nichts und sendet ATZ,
das Modem wird initialisiert. Die nächste Zeile wartet auf
OK (die Antwort des Modems auf die Initialisierung)
und sendet die Telefonnummer. Dann wird auf CONNECT
gewartet und nur ein Zeilenwechsel gesendet.
Die nächste Regel ist etwas komplexer: es wird auf ogin:
(für login:) gewartet. Kommt kein ogin:
in der Timeout-Zeit an, wird der String zwischen den beiden -
geschickt (es wird automatisch ein Zeilenvorschub angehängt, also
tatsächlich ein weiterer Zeilenvorschub gesendet) und
wieder auf ogin: gewartet. Im Erfolgsfall
wird ppp-user geschickt, Eure
Benutzerkennung für ppp Benutzung.
Dann wird auf word: (für Password:)
gewartet und password geschickt, Eurer Online-Kennwort.
Selbstverständlich müsst Ihr user und password durch Eure Benutzerkennung und Euer Online Kennwort ersetzen.
Achtung: Wenn Ihr in einer unsicheren Umgebung seid, solltet Ihr sicherstellen, dass das Skript nur von Euch gelesen werden kann. Wer es liest, erfährt Eure Handshake Anmeldeinformation und kann auf Eure Kosten surfen!
down Skript -- Verbindungsabbau
#!/bin/sh
# /etc/ppp/ppp-down
# (c) Klaus Franken, S.u.S.E. GmbH Fuerth, Germany
# 12.06.97, kfr@suse.de
DEVICE=ppp0
FILE=/var/run/$DEVICE.pid
if test -r $FILE ; then
echo "Killing PPP: $DEVICE"
kill -INT `cat $FILE`
if test $? != 0; then
echo "WARNING: stale pid file or pppd still running"
echo " please check by hand"
rm -rf $FILE
exit 1
fi
else
echo "PPP not running on $DEVICE"
exit 2
fi
exit 0
beendet den pppd Prozess und baut damit die
Verbindung ab. Ihr seht, das Skript enthält nichts
Handshake Spezifisches und kann für den Abbruch aller
ppp0 Verbindungen genutzt werden.
Es benutzt, dass pppd in der Datei
/var/run/ppp0.pid seine Prozessnummer ablegt.
Das obige up Skript baut zwar eine Verbindung
auf, aber es sagt nicht, wenn es damit fertig ist.
Wenn man zu früh einen Kontakt versucht, erhält
man eine hässliche Fehlermeldung: network is unreachable.
Wen das stört, der kann fortschrittliche Möglichkeiten
von pppd benutzen, um über den abgeschlossenen Aufbau
informiert zu werden.
pppd ruft die Programme/Skripte /etc/ppp/ip-up
und /etc/ppp/ip-down beim Auf- bzw. Abbbau
einer IP-Verbindung auf, sofern sie existieren.
ACHTUNG: Diese Skripte werden als root
ausgeführt. Sie stellen ein Sicherheitsrisiko dar.
Ihr solltest sicherstellen, dass sie nur als root
verändert/angelegt werden können, sofern Ihr in einer
unsicheren Umgebung seid.
#! /bin/bash FILE=/var/run/$1.ready echo `date` $* > $FILE
legt die Datei /var/run/ppp0.ready an.
Es kann als ip-up Skript verwendet werden.
#! /bin/bash FILE=/var/run/$1.ready /bin/rm -f $FILE
löscht die Datei /var/run/ppp0.ready.
Es kann als ip-down Skript benutzt
werden.
Sofern die Skripte entsprechend verwendet werden,
ist im Normalfall (das heißt, wenn pppd nicht
auf ungewöhnliche Weise beendet wurde und das ip-down
Skript nicht ausgeführt werden konnte) die Existenz
von /var/run/ppp0.ready ein Indiz dafür, dass
eine IP-Verbindung besteht.
#! /bin/bash
#CHATDEBUG="-v -V"
#PPPDEBUG="debug"
BASE=/var/run/ppp0
TTY=`tty`
CHAT=~/scripts/handshake.chat
/usr/sbin/pppd /dev/modem 115200 \
lock modem defaultroute crtscts -ipx-protocol bsdcomp 12 -detach \
connect "/usr/sbin/chat $CHATDEBUG -f $CHAT 2>$TTY" &
PID=$!
while true; do
if [ -f $BASE.ready ]; then exit 0; fi
if kill -0 $PID; then sleep 2; continue; fi
exit 1
done
ist ein erweitertes up Skript.
Es nutzt dieses Indiz, um erst zurückzukehren, wenn
die Verbindung steht, oder pppd sich wegen
eines Fehlers beendet hat.
Wie oben erwähnt, dürfte diald wesentlich
mehr Komfort bieten.
Natürlich können die Skripte noch Fehler enthalten. Bitte habt Verständnis, dass ich keinerlei Garantie übernehmen kann und die Benutzung vollständig auf Euer Risiko geht. Ich bin aber an Problemmeldungen interessiert und helfe Euch gerne bei der Analyse Eurer Probleme. Die Ergebnisse werden in eine Verbesserung der Skripte einfließen.