# 4.5. Login-Skript

Skript bearbeiten

  Mit diesem Dialog können Sie ein Einwahlskript für Ihren ISP erstellen. Benutzen Sie das Mini-Terminal und die Informationen von Ihrem ISP, um herauszufinden, welche Reihenfolge von Aktionen ausgeführt werden muß.

  - Expect: Kppp wartet auf den Empfang der angegebenen Zeichenfolge.

  - Send: Kppp sendet die angegebene Zeichenfolge.

  - Scan: Kppp durchsucht die eingehenden Daten nach der gegebenen Zeichenfolge und speichert die darauffolgenden Zeichen bis zum nächsten Zeilenumbruch in einem internen Puffer. Leerzeichen am Anfang und Ende der gespeicherten Zeichenfolge werden entfernt.

  - Save: speichert den vorher mit 'Scan' gesuchten String permanent im angegebenen Register. Das einzige gültige Register ist bisher 'password'.

  - Pause: Die angegebene Anzahl Sekunden warten.

  - Hangup: Kppp sendet den Aufhängen-Befehl an das Modem.

  - Answer: Kppp versetzt das Modem in den Antwort-Modus.

  - Timeout: Ändert die Standard-Zeitüberschreitung auf die angegebene Anzahl Sekunden dynamisch während der Skript-Ausführung. Sie können dies während der Skriptausführung mehrmals tun, falls nötig.

  - Prompt: Bittet den Kppp-Benutzer, eine Zeichenkette einzugeben, mit der angegebenen Zeichenfolge als Hinweis. Der Benutzer sieht dabei, was er eingibt. Wenn die angegebene Zeichenfolge die Marke ## enthält, wird diese durch den Inhalt des internen Puffers ersetzt.

  - PWPrompt: Bittet den Kppp-Benutzer, eine Zeichenkette einzugeben, mit der angegebenen Zeichenfolge als Hinweis. Der Benutzer sieht ein Sternchen für jedes eingegebene Zeichen.

  - ID: Falls das Benutzername-Feld in Kppp's-Hauptfenster ausgefüllt ist, wird dieser Benutzername gesendet. Falls das Benutzername-Feld nicht ausgefüllt ist, wird der Kppp-Benutzer nach seinem Benutzernamen gefragt, mit der angegebenen Zeichenfolge als Hinweis. Der Benutzer sieht, was er eingibt. Bei einem zweiten Aufruf, zum Beispiel aus einer Schleife, wird eine Eingabe gefordert mit der angegebenen Zeichenfolge als Hinweis.

  - Password: Wenn das Paßwort-Feld in Kppp's-Hauptfenster ausgefüllt ist, wird dieses gesendet. Falls nicht, wird der Kppp-Benutzer aufgefordert, ein Paßwort einzugeben, mit der angegebenen Zeichenfolge als Hinweis. Es wird ein Sternchen für jedes eingegebene Zeichen ausgegeben. Bei einem zweiten Aufruf, zum Beispiel aus einer Schleife, wird eine Eingabe gefordert mit der angegebenen Zeichenfolge als Hinweis.

  - LoopStart: Kppp wartet auf den Empfang der angegebenen Zeichenkette. Die Zeichenkette wird gespeichert für die Nutzung durch LoopEnd

  - LoopEnd: Kppp wartet auf den Empfang der angegebenen Zeichenkette und beendet die Schleife. Falls die Zeichenkette vom entsprechenden LoopStart zuerst empfangen wird, wird ein Sprung in die Zeile nach LoopStart vorgenommen, was eine Wiederholung von Benutzernamen/Paßwort-Dialogen ermöglicht.

## 4.5.1. Beispielskripte

Hier ist ein einfaches Skript, das ich zur Verbindung zu meinem ISP verwenden könnte:

     Expect      ID:           # auf 'ID:' warten
     Send        myid          # Sie müssen 'myid' durch Ihren Benutzernamen ersetzen
     Expect      word:         # warte auf 'password'
     Send        4u3fjkl       # sendet mein Paßwort '4u3fjkl'
     Expect      granted       # Mein ISP sendet 'Permission granted' bei Verbindungserfolg
     Send        ppp           # Das startet eine PPP-Verbindung für mich
                               # auf Seiten des ISPs.

Hier ist ein Skript für den selben Zugang mit Benutzername- und Paßwort-Abfrage: Dieses Skript fragt jedes Mal nach Benutzername und Paßwort, egal was im Benutzername- und Paßwort-Feld in Kppp's Hauptdialog eingegeben wurde. Dieses Skript zeigt auch die Benutzung der LoopStart/LoopEnd-Struktur. Falls während des Anmeldevorgangs etwas schiefgeht, ich zum Beispiel das Paßwort falsch eingegeben habe, gibt mein ISP eine Fehlermeldung aus und beginnt die ID/Paßwort-Schleife erneut, indem er die Zeichenkette ``ID:'' erneut sendet. Falls die Zeichenkette ``ID:'' vor der Abarbeitung von LoopEnd empfangen wird, startet Kppp das Skript erneut nach dem LoopStart-Befehl.

     LoopStart   ID:                        # wartet auf 'ID:'
     Prompt      Benutzername eingeben:     # fragt nach meinem Benutzernamen und sendet ihn.
     Expect      word:                      # wartet auf 'password'
     PWPrompt    Paßwort eingeben:          # fragt mich nach meinem Paßwort und sendet es.
     LoopEnd     granted                    # Mein ISP sendet 'Permission granted' bei Verbindungserfolg
     Send        ppp                        # Das startet eine PPP-Verbindung für mich

Hier ist das Skript, das ich zur Verbindung zu meinem ISP nutze: Dieses Skript fragt nur nach Benutzernamen und Paßwort, falls sie nicht in den entsprechenden Feldern in Kppp's Hauptdialog eingegeben wurden.

     LoopStart   ID:                        # wartet auf 'ID:'
     ID          Benutzername eingeben:     # fragt nach meinem Benutzernamen und sendet ihn.
     Expect      word:                      # wartet auf 'password'
     Password    Paßwort eingeben:          # fragt mich nach meinem Paßwort und sendet es.
     LoopEnd     granted                    # Mein ISP sendet 'Permission granted' bei Verbindungserfolg
     Send        ppp                        # Das startet eine PPP-Verbindung für mich
                                            # auf Seiten des ISPs.

Hier ist das Skript, das ich zur Verbindung mit einem ISP benutze, der eine Art Forderung/Antwort Authentifizierung benutzt. Normalerweise erhält man dazu eine Hardware-Ausrüstung (eine kleine Karte mit einem Display und einer Taschenrechnerähnlichen Tastatur) von seinem ISP. Sie müssen ein Paßwort kennen, um dieses Gerät nutzen zu können. Nach der Einwahl zeigt der ISP die Forderung an. Sie müssen diese in Ihr Gerät eingeben und erhalten als Antwort ein dynamisches Paßwort. Dieses müssen Sie dann an den ISP zurücksenden.

     LoopStart   ID:                        # wartet auf 'ID:'
     ID          Enter ID:                  # fragt mich nach meiner ID und sendet sie
     Scan        Challenge:                 #  Wartet auf 'Challenge' und speichert alles dahinter bis zum nächsten Zeilenumbruch.
     Expect      Password:                  # warte auf 'password'
     Prompt      Your token is ## - Enter Password  # fragt mich nach meinen Paßwort und sendet es.
     LoopEnd     granted                    # Mein ISP sendet 'Permission granted' bei Verbindungserfolg
     Send        ppp                        # Das startet eine PPP-Verbindung für mich
                                            # auf Seiten des ISPs.

Das folgende Log zeigt die Anmeldeprozedur eines fiktiven ISP, der bei jeder Anmeldung ein neues Paßwort vergibt. Das neue Paßwort muß überprüft und für die nächste Anmeldung gespeichert werden.

     Universität von Lummerland

     Login:mylogin
     Password:
     Das Passwort fuer Ihre naechste Anmeldung ist: YLeLfkZb
     Bitte speichern Sie es und geben Sie es zur Ueberpruefung ein.
     Ueberpruefung:YLeLfkZb

     1 = telnet
     2 = SLIP
     3 = PPP

     Ihre Wahl:

Kppp kann dazu benutzt werden, diese Aufgabe für Sie zu übernehmen (und schaltet dabei das Risiko aus, daß Sie das kleine Blatt Papier, auf dem Ihr derzeitiges Paßwort steht, verlieren). Der wichtigste Teil des folgenden Skripts ist die Kombination des Scan/Save Teils.

     Expect      Login:                     # warte auf Login Prompt
     ID                                     # sende ID
     Expect      Password:                  # warte auf Paßwort Prompt
     Password                               # sende password
     Scan        ist:                       # warte auf '... naechste Anmeldung ist:' und
                                            # scanne das folgende Paßwort
     Save        password                   # speichere das neue Paßwort für nächste Anmeldung
     Expect      Verification:              # warte auf 'Ueberpruefung:'
     Password                               # sende neues Paßwort
     Expect      choice:                    # warte auf Prompt, bei dem Sie zwischen verschiedenen
                                            # Optionen (telnet, SLIP, PPP) wählen können
     Send        3                          # wähle Option 3, PPP