Commande pour exécuter une ligne de commande

Résolu
Orlus -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Après avoir parcouru le net à la recherche de ma réponse, je poste ici pour vous poser la question :

J'essaye d'écrire un script qui permet de récupérer automatiquement les fichiers config des routeurs sur mon réseau. Je voudrais que celui-ci exécute automatiquement ce que je fais à la main.

Voilà l'algorithme en français pur & dur :

Connexion en telnet à 192.168.1.1

Ecrire "login"
Patienter
Ecrire "password"
Patienter
Ecrire "en"
Patienter
Ecrire "enable"
Patienter
Ecrire "copy running-config tftp"
Patienter
Ecrire "192.168.1.2"
Patienter
Ecrire "test"
Patienter
Ecrire "exit"

En bash, ça donnerait :

telnet 192.168.1.1
eval "login"
sleep 1
eval "password"
sleep 1
eval"en"
sleep 1
eval "enable"
sleep 1
eval "copy running-config tftp"
sleep 1
eval "192.168.1.2"
sleep 1
eval "test"
sleep 1
eval "exit"
exit

J'ai marqué "eval" par commande par défaut, évidement ça ne marche pas. Connaissez-vous une commande qui permet d'automatiser cette tâche ? J'ai entendu parler du langage expect mais je souhaiterais savoir s'il est possible d'effectuer en script en Bash dans un premier temps.

Merci

2 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Expect est tout à fait dédié à ce que tu veux et il s'intègre dans un script bash.

    Voici un exemple (c'est pour ssh mais ça le fait très bien avec telnet) :
    https://forums.commentcamarche.net/forum/affich-2340762-ssh-ecrire-un-script-pour-connexion-ssh

    Liens vers docs : https://forums.commentcamarche.net/forum/affich-2340762-ssh-ecrire-un-script-pour-connexion-ssh#5

    1
  2. Orlus
     
    Salut,

    Merci pour la confirmation sauf que pour l'instant, je n'arrive pas à installer Expect ni sur ma VM Ubuntu 8.04.3 ni sous mon Debian. Mais c'est un autre problème. Merci pour le lien !
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Normalement il est dans les dépôts, un simple apt-get (ou aptitude) devrait suffire ;-\

      Edit : Sous une Ubuntu 8.10 :

      ~$ aptitude search expect
      p   empty-expect                                          - Run processes and applications under pseudo-terminal
      p   expect                                                - A program that can automate interactive applications
      p   expect-dev                                            - A program that can automate interactive applications (developmen
      p   expect-tcl8.3                                         - A program that can automate interactive applications
      p   expect-tcl8.3-dev                                     - A program that can automate interactive applications (developmen
      p   expectk                                               - A program that can automate interactive applications (Tk hooks)
      p   expectk-tk8.3                                         - A program that can automate interactive applications (Tk hooks)
      p   libexpect-perl                                        - Expect.pm - Perl Expect interface
      p   libexpect-simple-perl                                 - wrapper around the Expect module
      p   libnet-scp-expect-perl                                - Wrapper for scp to send passwords via Expect
      p   libtest-expect-perl                                   - Automated driving and testing of terminal-based programs
      i A python-pexpect                                        - Python module for automating interactive applications
      v   python2.4-pexpect                                     -
      v   python2.5-pexpect                                     -
      
      0