Exemple de didacticiel Expect Script SSH



Expect se présente comme un outil de programmation puissant, conçu pour faciliter l’automatisation des interactions avec des applications basées sur le texte, notamment les sessions SSH. Grâce à Expect, il est possible de concevoir des scripts qui établissent des connexions avec des serveurs distants, exécutent des commandes et interagissent avec les invites, ouvrant ainsi la voie à l’automatisation de tâches administratives complexes et à un gain de temps considérable.

Ce guide détaillé vous accompagnera, étape par étape, dans la création d’un script Expect SSH, depuis la configuration initiale jusqu’à l’automatisation des processus. Que vous soyez un administrateur système chevronné ou un novice dans l’automatisation, ce tutoriel vous apportera les connaissances et les compétences essentielles pour maîtriser Expect et simplifier vos tâches SSH.

Procédure d’installation d’Expect

Avant de démarrer, assurez-vous d’avoir Expect installé sur votre système. Les instructions d’installation diffèrent selon votre système d’exploitation. Sur les systèmes Linux, vous pouvez utiliser la commande suivante :


sudo apt-get install expect

Pour les utilisateurs de macOS, la commande à utiliser est :


brew install expect

Une fois l’installation d’Expect terminée, vous êtes prêt à créer vos scripts.

Conception d’un script Expect SSH

Étape 1 : Inclusion des librairies

La première étape consiste à importer les bibliothèques Expect dans votre script. Vous pouvez accomplir cette action en utilisant la ligne de commande suivante :


#!/usr/bin/expect -f

Cette ligne indique à l’interpréteur d’utiliser Expect pour exécuter le script et permet au système d’exploitation de reconnaître le fichier comme un script exécutable.

Étape 2 : Établissement de la connexion SSH

Pour initialiser une connexion SSH, la commande spawn est employée. Par exemple, l’extrait de code ci-dessous se connecte à l’hôte distant « serveur1 » avec l’utilisateur « utilisateur »:


spawn ssh utilisateur@serveur1

Étape 3 : Saisie du mot de passe

Après avoir établi la connexion SSH, le système vous demandera le mot de passe de l’utilisateur. Pour répondre à cette invite, utilisez la commande expect. L’exemple suivant attend l’invite de mot de passe et saisit le mot de passe « motdepasse »:


expect "Mot de passe :"
send "motdepasse\r"

Étape 4 : Exécution de commandes à distance

Une fois connecté au serveur distant, vous pouvez exécuter des commandes à l’aide de la commande send. Par exemple, le code ci-dessous exécute la commande « ls -l » sur le serveur distant:


send "ls -l\r"

Étape 5 : Récupération des résultats

Pour récupérer la sortie de la commande exécutée à distance, utilisez la commande expect. L’exemple suivant capture la sortie de la commande « ls -l » et la stocke dans la variable result:


expect {
-re ".+" { set result $expect_out(buffer) }
eof { break }
}

En guise de conclusion

Dans ce tutoriel, nous avons détaillé les étapes nécessaires pour concevoir un script Expect SSH capable de se connecter à un serveur distant, d’exécuter des commandes et de récupérer les résultats. Expect vous permet d’automatiser les tâches administratives complexes, de gagner du temps et d’améliorer l’efficacité de vos opérations.

Recommandations

* Utilisez l’option -d pour activer le débogage et analyser les échanges entre votre script et le serveur distant.
* Employez la commande spawn -noecho pour masquer la saisie du mot de passe sur la console.
* Servez-vous des expressions régulières dans la commande expect pour correspondre à des invites plus complexes.
* Générez des clés SSH pour une authentification sans mot de passe.
* Utilisez les variables d’environnement pour stocker les informations de connexion.

Mots-clés : Script SSH, Automatisation, Expect, Connexion distante

Questions fréquemment posées

1. Qu’est-ce qu’Expect ?
Expect est une librairie de programmation conçue pour automatiser les interactions avec des programmes basés sur du texte.

2. Pourquoi utiliser Expect avec SSH ?
Expect permet d’automatiser des tâches administratives complexes telles que la connexion à des serveurs distants, l’exécution de commandes et l’extraction des résultats.

3. Comment installer Expect ?
Les instructions d’installation dépendent de votre système d’exploitation. Sous Linux, utilisez sudo apt-get install expect. Sous macOS, utilisez brew install expect.

4. Comment initialiser une connexion SSH avec Expect ?
Utilisez la commande spawn pour établir la connexion, par exemple : spawn ssh utilisateur@serveur1.

5. Comment fournir le mot de passe ?
Utilisez la commande expect pour attendre l’invite de mot de passe, puis saisissez le mot de passe, par exemple : expect "Mot de passe :" && send "motdepasse\r".

6. Comment exécuter des commandes à distance ?
Utilisez la commande send pour envoyer vos commandes, par exemple : send "ls -l\r".

7. Comment récupérer les résultats ?
Employez la commande expect avec des expressions régulières pour extraire les résultats, par exemple : expect { -re ".+" { set result $expect_out(buffer) } }.

8. Comment automatiser une opération complexe ?
Créez un script qui utilise les commandes Expect pour interagir avec le programme en texte.