Utiliser Expect pour effectuer des tâches d’administrations courantes.

Dans ce tutoriel, nous allons voir comment enregistrer la sortie telnet ou ssh d’une commande sur un routeur ou un switch  dans un fichier, sur votre pc. Pour se faire nous allons utiliser l’outil d’automatisation de tâches Expect. Ce tutoriel pourra aussi faire office de découverte de ce « langage » très pratique pour les administrateurs réseaux & système.

Avant une petite définition de Expect s’impose :

Expect est un outil d’automatisation de tâches Unix, pour des applications interactive comme ssh, telnet, ftp, passwd, fsck ou autre. Il utilise le langage de script Tcl et fonctionne depuis n’importe quel Unix mais également depuis Windows.

Maintenant utiliser ces commandes pour installer expect.

# sudo apt-get update
# sudo apt-get install expect 

Vous pouvez trouver quelques commandes clés concernant expect, à cette adresse ici.

Le but de ce tutoriel est de se connecter à un routeur Cisco, puis d’afficher la table des Vlans et de rediriger le tout dans un fichier texte exploitable.

Voici le script utilisé (Vous pouvez le télécharger en fin de tutoriel):

[bash]#!/usr/bin/expect
## Attention de bien modifier le shebang et de mettre expect
## Définition des variables
## En cas de problème le programme est arrêté au bout de 120 secondes
set timeout 120
## Récupération de l’adresse IP, login et mot de passe dans des variables
set Machine [lindex $argv 0] set Username [lindex $argv 1] set Password [lindex $argv 2] ## Connexion au routeur
spawn telnet $Machine
## pause entre chaque saisie, obligatoire pour le bon fonctionnement du script
sleep 5
expect {
"Username: " {send "$Username\n"}
}
expect {
"Password: " {send "$Password\n"}
}
sleep 5
## Command envoyé au routeur dont on veut récupéré le contenu
send "show vlan-switch\n"
sleep 10
## Déconnexion du routeur
send "exit"
send "\r"
interact
exit [/bash]

Pour exécuter le script n’oublier pas de le rendre exécutable avec la commande suivante :

chmod u+x nom_du_script

Puis dans le terminal taper :

./(nom_du_script) 192.168.0.157 login mot_de_passe

Pour utiliser ce script vous devez fournir en argument et dans cet ordre l’adresse ip du routeur, le login et le mot de passe.

Vous voyez ici le déroulement du script en mode console, sans intervention de l’utilisateur.

Maintenant imaginons que vous vouliez récupérer le résultat de cette commande dans un fichier texte, il vous suffit de taper la commande suivante :

./(nom_du_script) 192.168.0.157 login mot_de_passe | tee exemple.txt

Maintenant vous devriez avoir un fichier exemple.txt de créé avec le même contenu que le terminal.

Ici nous avons vu un exemple simple. Mais expect permet d’automatiser beaucoup de tâche comme par exemple la sauvegarde d’équipement, la modification de mot de passe, … .

Je vous monterais dans le prochain tutoriel, un cas concret dont je me sers toute les semaines, comment réaliser une sauvegarde TFTP totale d’un Firewall Fortigate avec la commande expect.

Vous pouvez télécharger le script d’exemple en cliquant-ici.

That’s All.

1 potin

  1. Merci de débloquer le clique droit, sympa pour c/c le script .. En plus sa n’arrête pas qui veut copier/coller ..

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *