Exemple de didacticiel Expect Script SSH

Introduction à la rédaction de scripts SSH avec Expect

Expect est une bibliothèque de programmation puissante qui permet d’automatiser les interactions avec les programmes basés sur du texte, tels que les sessions SSH. En utilisant Expect, vous pouvez créer des scripts qui se connectent à des serveurs distants, exécutent des commandes et interagissent avec des invites de commande, vous permettant ainsi d’automatiser des tâches administratives complexes et de gagner du temps précieux.

Ce didacticiel complet vous guidera pas à pas dans la création d’un script Expect SSH, de la configuration initiale à l’automatisation des tâches. Que vous soyez un administrateur système expérimenté ou un nouveau venu dans l’automatisation, ce guide vous fournira les connaissances et les compétences nécessaires pour maîtriser Expect et automatiser vos tâches SSH.

Installation d’Expect

Avant de commencer, vous devez installer Expect sur votre système. Les instructions d’installation varient en fonction de votre système d’exploitation. Pour les systèmes basés sur Linux, vous pouvez utiliser la commande suivante :


sudo apt-get install expect

Pour les systèmes basés sur macOS, vous pouvez utiliser la commande suivante :


brew install expect

Une fois Expect installé, vous êtes prêt à commencer à créer des scripts.

Création d’un script Expect SSH

Étape 1 : Charger les bibliothèques

La première étape consiste à charger les bibliothèques Expect dans votre script. Vous pouvez le faire en utilisant la commande suivante :


#!/usr/bin/expect -f

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

Étape 2 : Établir une connexion SSH

Pour établir une connexion SSH, vous pouvez utiliser la commande spawn. Par exemple, le code suivant se connectera à l’hôte distant « serveur1 » avec le nom d’utilisateur « utilisateur » :


spawn ssh utilisateur@serveur1

Étape 3 : Fournir le mot de passe

Après avoir établi la connexion SSH, vous serez invité à fournir le mot de passe de l’utilisateur. Vous pouvez le faire en utilisant la commande expect. Par exemple, le code suivant attendra l’invite de mot de passe et fournira le mot de passe « motdepasse » :


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

Étape 4 : Exécuter des commandes à distance

Une fois que vous êtes connecté au serveur distant, vous pouvez exécuter des commandes en utilisant la commande send. Par exemple, le code suivant exécutera la commande « ls -l » sur le serveur distant :


send "ls -l\r"

Étape 5 : Récupérer la sortie

Pour récupérer la sortie de la commande exécutée à distance, vous pouvez utiliser la commande expect. Par exemple, le code suivant récupérera la sortie de la commande « ls -l » et l’enregistrera dans la variable result :


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

Conclusion

Dans ce didacticiel, nous vous avons guidé pas à pas dans la création d’un script Expect SSH qui se connecte à un serveur distant, exécute des commandes et récupère la sortie. En utilisant Expect, vous pouvez automatiser des tâches administratives complexes, gagner du temps et améliorer l’efficacité de votre flux de travail.

Astuces

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

Tags : Script SSH, Automatisation, Expect, Connexion distante

FAQ

1. Qu’est-ce que Expect ?
Expect est une bibliothèque de programmation qui permet d’automatiser les interactions avec les programmes basés sur du texte.

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

3. Comment installer Expect ?
Les instructions d’installation varient en fonction du système d’exploitation. Pour les systèmes basés sur Linux, utilisez sudo apt-get install expect. Pour les systèmes basés sur macOS, utilisez brew install expect.

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

5. Comment fournir un mot de passe ?
Utilisez la commande expect pour attendre l’invite de mot de passe et fournir 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 exécuter des commandes, par exemple : send "ls -l\r".

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

8. Comment automatiser une tâche complexe ?
Créez un script de commande qui utilise les commandes Expect pour interagir avec le programme basé sur du texte.