# 4.5. Script de connexion

Modifier le script

  Utilisez cette boîte de dialogue pour composer un script de connexion pour votre FAI. Utilisez le mini terminal et les informations transmises par votre FAI pour comprendre la séquence d'actions qu'il faut mettre en place pour établir la connexion.

  - Expect : Kppp attendra de recevoir le texte précisé ici

  - Send : Kppp enverra le texte précisé ici

  - Scan : Kppp cherchera dans les données reçues la chaîne spécifiée et rangera tout caractère entre la fin de cette chaîne et le prochain saut de ligne dans un buffer interne. Les espaces initiaux et finaux seront supprimés.

  - Save : Range de façon définitive la chaîne extraite par l'opération précédente dans le registre spécifié. A ce stade, le seul registre valide est 'password'.

  - Pause : Kppp fera une pause pendant le nombre de secondes précisé ici

  - Hangup : Kppp enverra la séquence de raccrochage au modem

  - Answer : Kppp demandera au modem de se mettre en mode réponse

  - Timeout : fixe le délai maximal d'attente avant abandon au nombre de secondes précisé ici, dynamiquement, pendant l'exécution du script. Vous pouvez changer la valeur du délai maximal plusieurs fois pendant l'exécution du script, si nécessaire.

  - Prompt : Demande à l'utilisateur de taper du texte, en utilisant la chaîne de caractères précisée ici. L'utilisateur verra à l'écran les caractères qu'il tape.

  - PWPrompt : Demande à l'utilisateur de taper du texte, en utilisant la chaîne de caractères donnée ici. Un astérisque sera affiché pour chaque caractère tapé par l'utilisateur.

  - ID : Si le champ Nom d'utilisateur est rempli dans la fenêtre principale de Kppp, c'est ce nom qui sera envoyé. Si le champ n'est pas rempli, Kppp demandera à l'utilisateur d'entrer son nom de login, en utilisant le texte précisé ici. L'utilisateur verra s'afficher à l'écran ce qu'il tape. Lors d'un second passage, comme le deuxième tour d'une boucle, une invite sera affichée en utilisant le texte entré ici.

  - Password : Si le champ Mot de passe est rempli dans la fenêtre principale de Kppp, c'est ce mot de passe qui sera envoyé. Si le champ n'est pas rempli, Kppp demandera à l'utilisateur d'entrer un mot de passe, en utilisant le texte précisé ici. Un astérisque sera affiché à l'écran pour chaque caractère tapé par l'utilisateur. Lors d'un second passage, comme le deuxième tour d'une boucle, une invite sera affichée en utilisant le texte entré ici.

  - LoopStart : Kppp attendra la réception du texte précisé ici. Ce texte sera mémorisé et servira à la fin de la boucle.

  - LoopEnd : Kppp attendra la réception du texte précisé ici pour sortir de la boucle. Si le texte correspondant au début de boucle est reçu en premier, Kppp sautera à la ligne suivant le début de boucle, pour la répétition des commandes duales du style login/mot de passe.

## 4.5.1. Exemples de scripts

Voici un script simple qui pourrait me servir à me connecter à mon FAI :

     Expect      ID:                        # attente du texte "ID:"
     Send        myid                       # remplacez myid par votre login
     Expect      word:                      # attente du texte 'password'
     Send        4u3fjkl                    # envoi du mot de passe '4u3fjkl'
     Expect      granted                    # Mon FAI envoie 'Permission granted' en cas de succès.
     Send        ppp                        # Lance une session PPP
                                            # chez mon FAI

Ci-dessous est présenté un script pour le même compte avec demande de login et de password ; ce script demandera les deux chaque fois, quel que soit le contenu des champs login et password dans la fenêtre principale de Kppp. Ce script illustre également l'utilisation des options LoopStart et LoopEnd. En cas de problèmes pendant la séquence de connexion, si par exemple vous avez commis une erreur dans votre mot de passe, le FAI affichera un message d'erreur et passera une fois de plus dans la boucle login/password, en vous affichant l'invite "ID:". Si le texte "ID:" est lu par Kppp avant le LoopEnd, Kppp redémarrera le script après l'instruction LoopStart.

     LoopStart   ID:                        # attente du texte "ID:"
     Prompt      Enter ID:                  # me demande mon login et l'envoie
     Expect      word:                      # attente de 'password'
     PWPrompt    Enter Password:            # me demande mon mot de passe et l'envoie
     LoopEnd     granted                    # Mon FAI envoie 'Permission granted' en cas de succès.
     Send        ppp                        # Lancement d'une session PPP

Voici le script que j'utilise en fait pour me connecter à mon FAI : ce script ne me demandera mon login et mon mot de passe que si je n'ai pas rempli les champs correspondants dans la fenêtre principale de Kppp.

     LoopStart   ID:                        # attente du texte "ID:"
     ID          Enter ID:                  # me demande mon login et l'envoie
     Expect      word:                      # attente de 'password'
     Password    Enter Password             # me demande mon mot de passe et l'envoie
     LoopEnd     granted                    # Mon FAI envoie 'Permission granted' en cas de succès.
     Send        ppp                        # Lancement d'une session PPP

Voici un script que j'utilise pour me connecter à un FAI qui utilise une sorte d'identification par défi/réponse. En général le FAI vous confie un matériel spécifique (une carte intelligente avec un affichage et un clavier du type calculatrice). Vous devez connaître un mot de passe pour utiliser ce matériel. Après avoir appelé votre FAI, ce dernier vous pose un défi. Vous entrez le défi dans le boîtier, lequel répond par un mot de passe dynamique. Vous devez alors taper ce mot de passe.

     LoopStart   ID:                        # attente du texte "ID:"
     ID          Enter ID:                  # me demande mon login et l'envoie
     Scan        Challenge:                 # recherche de 'Challenge' et rangement de ce qui suit jusqu'à la fin de la ligne
     Expect      Password:                  # attente de 'password'
     Prompt      Le défi est ## - Entrer la réponse # me demande la réponse au défi et l'envoie
     LoopEnd     granted                    # mon FAI envoie 'Permission granted' en cas de succès
     Send        ppp                        # Lancement d'une session ppp

La session enregistrée ci-dessous montre la procédure de connexion à un FAI fictif qui fournit un nouveau mot de passe à chaque connexion. Le mot de passe doit être vérifié et enregistré en vue de la prochaine session.

     University of Lummerland

     Login:mylogin
     Password:
     The password for your next session is: YLeLfkZb
     Please record and enter it for verification.
     Verification:YLeLfkZb

     1 = telnet
     2 = SLIP
     3 = PPP

     Your choice:

kppp peut accomplir cette tâche fastidieuse à votre place (en éliminant par la même occasion le risque de perdre la petite feuille de papier où vous aurez noté votre mot de passe courant). La partie cruciale de ce script réside dans l'usage des mots-clés Scan/Save:

     Expect      Login:                     # attente de la demande d'identification
     ID                                     # envoi de l'identificateur
     Expect      Password:                  # attente de la demande de mot de passe
     Password                               # envoi du mot de passe
     Scan        is:                        # attente du texte '... next session is:' et
                                            # analyse du mot de passe le succédant
     Save        Password                   # sauvegarde du nouveau mot de passe en vue de la prochaine connexion
     Expect      Verification:              # attente du texte 'Verification:'
     Password                               # envoi du nouveau mot de passe
     Expect      choice:                    # attente du menu de choix entre differentes options (telnet, SLIP, PPP)
     Send        3                          # choix de l'option 3, c'est-à-dire PPP