Wem der Einsatz von "mgetty" zu komplex oder zu aufwendig erscheint, kann
die Funktion der "Callback"-Erkennung durch Erweiterung des "pppd
"
Anwahlskriptes auf einfache Weise nachbilden:
#!/bin/sh # Aufbau einer PPP Verbindung # zu einem Windows NT Server unter Verwendung des CALLBACK-Modus phone="cb 555111" /usr/sbin/pppd 38400 connect '/usr/sbin/chat -v -f $HOME/win_nt.chat' \ lock $phone -detach /usr/sbin/pppd 38400 connect '/usr/sbin/chat -v -f $HOME/win_nt_cb.chat' \ lock -detach
Parameterbeschreibung Datei dial_win_nt.callback
:
-detach : verhindert daß 'pppd' über einen fork(2)-Aufruf als Hintergrundprozess läuft
Entscheidend bei dieser Aufrufvariante ist die Verwendung der "pppd
"-Option
"-detach
", die dafür sorgt, daß der erste "pppd
"-Prozess nicht im
Hintergrund abläuft und damit der zweite "pppd
"-Prozess erst nach
Beendigung des ersten gestartet wird.
Nach dem erstmaligen Aufruf des "pppd
", bei dem Windows NT nur die
Telefonnummer mittgeteilt wird, unter der zurückgerufen werden soll,
erfolgt ein weiterer Aufruf des "pppd
", der den Rückruf durch ein
geändertes "chat
"-Skript (win_nt_cb.chat
) abfängt:
TIMEOUT 120 ABORT "NO CARRIER" ABORT BUSY ABORT "NO DIALTONE" ABORT ERROR "" +++ATZ OK ATE1Q0&C1&S0 RING ATA CONNECT ""
Es wird nach der Modeminitialisierung einfach auf die "RING
"-Kennung eines
eingehenden Anrufes gewartet, durch "ATA
" erfolgt die manuelle Beantwortung
des Klingelzeichens: das Modem hebt ab und wartet auf die "CONNECT
"-Meldung.
Kommt binnen des unter "TIMEOUT
" definierten Zeitraumes keine Verbindung
zustande, wird "chat
" und somit auch "pppd
" beendet.
Bei einer positiven "CONNECT
"-Kennung übernimmt wie gehabt der "pppd
" die
Steuerung und baut die PPP-Verbindung auf.
Voraussetzung ist natürlich wieder die Deaktivierung des "AUTOANSWER"-Modus beim angeschlossenen Modem (siehe Abschnitt 2.5).
Ein -unkommentiertes- Protokoll einer erfolgreichen PPP-Verbindungsaufnahme
via CHAP-Authentifizierung mit Rückruf durch den Windows NT Server ohne
Verwendung des "mgetty
"-Prozesses sieht folgendermaßen aus (der
"pppd
"-Aufruf zur Übergabe der Telefonnummer ist nicht mehr aufgeführt):
pppd: pppd 2.2.0f_SIGI.0 started by root, uid 0 chat: timeout set to 120 seconds chat: abort on (NO CARRIER) chat: abort on (BUSY) chat: abort on (NO DIALTONE) chat: abort on (ERROR) chat: send (+++ATZ^M) chat: expect (OK) chat: +++ATZ^M^M chat: OK -- got it chat: send (ATE1Q0&C1&S0^M) chat: expect (RING) chat: ^M chat: ATE1Q0&C1&S0^M^M chat: OK^M chat: ^M chat: RING -- got it chat: send (ATA^M) chat: expect (CONNECT) chat: ^M chat: ATA^M^M chat: CONNECT -- got it chat: send (^M) pppd: Serial connection established. pppd: Using interface ppp0 pppd: Connect: ppp0 <--> /dev/ttyS0 Der restliche Verbindungsaufbau verläuft dann gemäß Punkt 7.3/Punkt 7.4.