title: Programmed Dialogue with Interactive Programs
text: # Programmed Dialogue with Interactive Programs
  
  PDIP est le sigle de Programmed Dialogue with Interactive Programs (« Dialogue programmé avec des programmes interactifs », tiré des premières lignes du manuel d'Expect).
  
  C'est une version simplifiée de l’utilitaire expect. Comme lui, PDIP interprète un script de commandes pour dialoguer avec un programme interactif comme le ferait un opérateur humain. Mais il n’a pas toutes les possibilités de expect qui est capable d'interagir avec plusieurs programmes en même temps, d'accepter un langage de commandes de haut niveau offrant les branchements et des structures de contrôle de haut niveau et de redonner le contrôle à l’opérateur en cours de session.
  
  PDIP accepte un langage très simple en entrée pour fournir des fonctions de base :
  
  * Filtrage de la sortie du programme pour se caler sur une chaîne de caractères se conformant à un modèle
  * Envoi de chaînes de caractères au programme
  * Arrêt des interactions avec le programme pendant une durée donnée en secondes
  
  PDIP est disponible en logiciel libre sur sourceforge.
  
  ## Codage
  
  La ligne de commandes de PDIP se présente comme suit :
  
  PDIP lit cmdfile ou son entrée standard (défaut) et accepte les commandes suivantes :
  
  Les options passées au programme sont :
  
  Voici quelques exemples d'utilisation :
  
  L’exemple suivant montre la mise en œuvre d’une connexion telnet vers un hôte appelé ’remote’ sur le port 34570 avec le nom de login ’foo’ et le mot de passe ’bar’. Comme le numéro de port distant est spécifié à l’aide d’une option (-p), il faut faire précéder la commande d’un double tiret (--). Les commandes sont injectées sur l’entrée standard. On attend le prompt ’$’ et on lance la commande ls avant de se déconnecter du shell via la commande exit.
  
  L’exemple suivant montre la mise en œuvre d’une connexion telnet vers un hôte appelé ’remote’ avec le nom de login ’foo’ et le mot de passe ’bar’. Les commandes sont injectées sur l’entrée standard. On attend le prompt ’$’ et on lance la commande ls avant de se déconnecter du shell via la commande exit.
  
  L’exemple suivant montre la mise en œuvre d’une connexion ftp vers un hôte appelé ’remote’ avec le nom de login ’foo’ et le mot de passe ’bar’. Les commandes sont injectées sur l’entrée standard. On attend l’apparition du prompt ’ftp>’ en début de ligne et on lance la commande ’help’ avant de se déconnecter de ftp avec la commande ’quit’.
  
  L’exemple suivant met en œuvre une session avec la calculatrice bc qui a la particularité de ne pas afficher de prompt en début de ligne de commande. On utilise le méta caractère ’$’ pour se synchroniser sur les fins de ligne. Deux opérations sont lancées ’3+4’ et ’6*8’. Ensuite on quitte bc.
  
  L’exemple suivant met en œuvre une session telnet vers un hôte appelé ’remote’ avec un nom de login ’foo’ et un mot de passe ’bar’. Les commandes sont injectées sur l’entrée standard. Avec une expression régulière, on attend un prompt de la forme "....-<login_name>-pathname> " ou "....-<login_name>-pathname>" en début de ligne. Ensuite la commande ’ls -l’ est lancée avant de se déconnecter de telnet(1) avec la commande ’exit’.
  
  