Comment utiliser pexpect dans python

Comment utiliser pexpect dans python

éperdu est un module Python populaire pour effectuer différents types de tâches automatisées. Différents types d'applications interactives telles que Telnet, SSH, FTP, etc., peut être automatisé en utilisant ce module. Il s'agit d'un module Python pur, et il ne nécessite pas de compilateur C ou de TCL ou s'attend à des extensions comme d'autres attendent des modules. Il peut fonctionner facilement en utilisant un interprète Python uniquement. Ce module peut être utilisé de deux manières. Une façon consiste à utiliser le courir() fonction, et une autre façon est d'utiliser frayer classe. Le courir() La fonction est facile à utiliser que la classe Spawn et effectue rapidement les tâches automatisées. La commande particulière ou un programme peut être exécuté par le courir() fonction qui renvoie la sortie. Cette fonction peut être utilisée comme alternative au OS.système() fonction. Le frayer La classe est plus puissante que le courir() Fonction qui peut engendrer un programme enfant, interagir avec elle en envoyant des commentaires et en attendant la réponse. Ce module est installé dans Python3 par défaut. Les deux façons d'utiliser ce module se sont présentées dans ce tutoriel.

Utilisation de la fonction run ()

Syntaxe:

La syntaxe du courir() La fonction est donnée ci-dessous. Il a de nombreux arguments à diverses fins. Mais les 3 ou 4 premiers arguments sont principalement utilisés. Le premier argument de cette fonction est obligatoire qui prend la commande que cette fonction exécutera. Il peut renvoyer plusieurs sorties. Si la faire de l'escroquerie L'argument est utilisé avec le FAUX Valeur, il ne renverra que la sortie de la commande.

run (Commande, timeout = 30, withexitstatus = false, events = non, extra_args = aucun, logfile = aucun, cwd = aucun, env = nul, ** kwargs)

Exemple-1: différentes utilisations de la fonction run ()

Trois utilisations différentes de la courir() La fonction s'est montrée dans le script suivant. Le 'PWDLa sortie de la commande est exécutée dans le premier courir() fonction qui affichera le chemin du répertoire de travail actuel. Ensuite, le courir() La fonction est utilisée pour déterminer les détails d'un fichier particulier, et le nom de fichier sera tiré de l'utilisateur. Le troisième courir() La fonction est utilisée pour faire le ssh connexion et récupérer tous les fichiers et dossiers à partir du la toile dossier.

# Importer le module PEXPECT
importer pexpect
Importer un système d'exploitation
# Exécuter la commande simple
Imprimer ("Le répertoire de travail actuel: \ n% s"% pexpect.Run ('Pwd').Decode ("UTF-8"))
# Récupérez les informations d'un fichier particulier
FileName = Input ("Entrez un nom de fichier existant:")
# Vérifiez que le fichier existe ou non
Si OS.chemin.existe (nom de fichier):
sortie = pexpect.run ("ls -l" + nom de fichier, withexitstatus = 0)
Imprimer ("Informations d'un fichier particulier: \ n% s"% Sortie.Decode ("UTF-8"))
autre:
imprimer ("Le fichier n'existe pas.")
# Récupérez les fichiers et le dossier d'un répertoire particulier à l'aide de la commande SSH
sortie = pexpect.run ("ssh fahmida @ localhost 'ls web /'", events = '(?i) mot de passe ':' 12345 \ n ')
Imprimer ("\ nhe Sortie de la commande SSH: \ n% s"% sortie.Decode ("UTF-8"))

Sortir

La sortie suivante apparaîtra après avoir exécuté le script ci-dessus. Dans la sortie, doc1.py a donné en tant que nom de fichier, et les détails de ce fichier ont montré. Ensuite, la liste de tous les fichiers du la toile Le dossier a montré en utilisant ssh connexion.

Utilisation de la classe Spawn

La syntaxe de la classe Spawn est donnée ci-dessous. Le constructeur de cette classe peut prendre de nombreux arguments à de nombreuses fins. Le premier argument est obligatoire qui prendra la commande d'exécution.

Class Spawn __init __ (self, commande, args = [], timeout = 30, maxRead = 2000, Search Window size = Aucun, logfile = aucun, cwd = aucun, Env = aucun)

Exemple-2: utilisation simple de la classe de spawn

L'utilisation simple de la classe Spawn s'est montrée dans le script suivant. Le 'date'La commande a été exécutée ici en utilisant la classe Spawn. La sortie de la commande sera récupérée en créant l'objet de la classe Spawn, et la sortie est imprimée en format lisible par l'homme en utilisant le décoder() méthode.

# Importer le module PEXPECT
importer pexpect
# Exécutez la commande de date à l'aide de Spawn
enfant = pexpect.Spawn ('Date')
# Lisez la sortie de l'enfant sans générer EOF
enfant.Attendez-vous (pexpect.Eof)
# Stockez le texte attendu par le motif de chaîne
sortie = enfant.avant
# Imprimez la sortie
Imprimer ("Aujourd'hui est:", sortie.Decode ("UTF-8"))

Sortir

La sortie suivante apparaîtra après avoir exécuté le script ci-dessus.

Exemple-3: Lisez le contenu du répertoire à l'aide de la connexion SSH

Création de connexions SSH et lecture de la liste de tous les fichiers et dossiers d'un répertoire particulier s'est affiché dans le script suivant. Ici, le mot de passe de l'utilisateur défini sera tiré de l'utilisateur pour établir une connexion SSH à l'aide de la classe Spawn. Si le mot de passe donné est incorrect, le script sera terminé en affichant un message d'erreur. Si le mot de passe donné est correct, mais que le terminal n'est pas défini, le script affichera le message de réussite de la connexion, envoie le type de terminal et définira le modèle attendu de l'invite de commande. Si le mot de passe est correct et que le terminal est défini, le script affichera le message de réussite et l'invite de commande shell.

# Importer le module PEXPECT
importer pexpect
# Définissez le nom d'utilisateur pour la connexion SSH
nom d'utilisateur = 'Fahmida @ localhost'
# Prenez un mot de passe valide de l'utilisateur
Mot de passe = entrée ("Entrez le mot de passe de connexion de% s:"% nom d'utilisateur)
# Exécutez la commande ssh en utilisant le spawn
enfant = pexpect.Spawn ('ssh' + nom d'utilisateur)
# Attendre le mot de passe
enfant.Attendez-vous ('Mot de passe:')
# Envoyer le mot de passe prélevé de l'utilisateur
enfant.Sendline (mot de passe)
# Sortie attendue
i = enfant.attendre ([«autorisation refusée», «type de terminal», «[# \ $]»])
# Je serai 0 si SSH est incapable de se connecter
Si i == 0:
Print ("Permission refusée par l'hôte. Connection impossible")
enfant.tuer (0)
# Je serai 1 si SSH est capable de se connecter mais le terminal n'est pas défini
Elif i == 1:
Imprimer ('connecté avec succès.\ Le type nterminal n'est pas défini.')
enfant.Sendline («VT100»)
enfant.attendre ('[# \ $]')
# Je serai 2 si SSH est capable de se connecter et que le terminal est défini
Elif i == 2:
Imprimer ('connecté avec succès.')
Invite = enfant.après
print ('invite de commande shell:', invite.Decode ("UTF-8"))

Sortir

La sortie suivante apparaîtra lorsque le script ci-dessus sera exécuté avec le mauvais mot de passe.

La sortie suivante apparaîtra lorsque le script ci-dessus sera exécuté avec le mot de passe correct.

Conclusion

PEXPECT est un module très utile pour les utilisateurs de Python qui les aide à effectuer automatiquement leurs tâches régulières. Les utilisations très basiques du module PEXPECT de Python ont été décrites dans ce tutoriel en utilisant des exemples faciles pour aider les utilisateurs à commencer à travailler avec ce module.