Python

Comment utiliser pexpect en Python

Comment utiliser pexpect en Python

s'attendre 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é à l'aide de ce module. C'est un module Python pur, et il ne nécessite pas de compilateur C ou d'extensions TCL ou Expect comme les autres modules attendent. Il peut fonctionner facilement en utilisant uniquement un interpréteur Python.  Ce module peut être utilisé de deux manières. Une façon consiste à utiliser le Cours() fonction, et une autre façon est d'utiliser frayer classer. le Cours() la fonction est facile à utiliser que la classe spawn et exécute les tâches automatisées rapidement. La commande particulière ou un programme peut être exécuté par le Cours() fonction qui renvoie la sortie. Cette fonction peut être utilisée comme alternative à la système d'exploitation.système() une fonction. le frayer la classe est plus puissante que la Cours() fonction qui peut générer un programme enfant, interagir avec lui en envoyant une entrée et en attendant la réponse. Ce module est installé en python3 par défaut. Les deux façons d'utiliser ce module ont été montrées dans ce tutoriel.

Utilisation de la fonction run()

Syntaxe:

La syntaxe du Cours() la fonction est donnée ci-dessous.  Il a de nombreux arguments à des fins diverses. Mais les 3 ou 4 premiers arguments sont surtout utilisés. Le premier argument de cette fonction est obligatoire et prend la commande que cette fonction exécutera. Il peut renvoyer plusieurs sorties. Si la avecétat de sortie l'argument est utilisé avec le Faux valeur, il ne renverra que la sortie de la commande.

run(commande, timeout=30, withexitstatus=False, events=None, extra_args=None, logfile=None, cwd=None, env=None, **kwargs)

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

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

# Importer le module d'attente
attente d'importation
importer le système d'exploitation
# Exécuter une commande simple
print("Le répertoire de travail actuel : \n%s" %pexpect.run('pwd').décoder("utf-8"))
# Récupérer 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 = attente.run("ls -l "+nom de fichier, withexitstatus=0)
print("Informations d'un fichier particulier : \n%s" %output.décoder("utf-8"))
autre:
print("Le fichier n'existe pas.")
# Récupérer les fichiers et le dossier d'un répertoire particulier à l'aide de la commande ssh
sortie = attente.run("ssh [email protected] 'ls web/'", events='(?i)mot de passe' :'12345\n')
print("\nLa sortie de la commande ssh : \n%s" %sortie.décoder("utf-8"))

Production

La sortie suivante apparaîtra après l'exécution du script ci-dessus. En sortie, doc1.py a donné comme nom de fichier, et les détails de ce fichier ont montré. Ensuite, la liste de tous les fichiers du la toile dossier a montré en utilisant ssh lien.

Utiliser la classe d'apparition

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 pour exécution.

class spawn  __init __ (self, command, args=[], timeout=30, maxread=2000, search window size=none, logfile=none, cwd=none, env=none)

Exemple-2 : Utilisation simple de la classe spawn

L'utilisation simple de la classe spawn a montré 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 dans un format lisible par l'homme en utilisant le décoder() méthode.

# Importer le module d'attente
attente d'importation
# Exécutez la commande date en utilisant spawn
enfant = attente.spawn('date')
# Lire la sortie enfant sans générer EOF
enfant.s'attendre (s'attendre.FEO)
# Stocke le texte attendu par le modèle de chaîne
sortie = enfant.avant que
# Imprimer la sortie
print("Aujourd'hui est :", sortie.décoder("utf-8"))

Production

La sortie suivante apparaîtra après l'exécution du script ci-dessus.

Exemple-3 : Lire le contenu du répertoire à l'aide d'une connexion ssh

La création d'une connexion ssh et la lecture de la liste de tous les fichiers et dossiers d'un répertoire particulier s'affichent dans le script suivant.  Ici, le mot de passe de l'utilisateur défini sera extrait 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, enverra 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 d'attente
attente d'importation
# Définir le nom d'utilisateur pour la connexion ssh
username = '[email protected]'
# Prenez un mot de passe valide de l'utilisateur
Mot de passe = input("Entrez le mot de passe de connexion de %s : " %username)
# Exécutez la commande ssh en utilisant spawn
enfant = attente.spawn('ssh ' + nom d'utilisateur)
# Attendez le mot de passe
enfant.attendre('mot de passe :')
# Envoyer le mot de passe pris de l'utilisateur
enfant.ligne d'envoi (mot de passe)
# Trois sorties attendues
je = enfant.attendre (['Autorisation refusée', 'Type de terminal', '[#\$] '])
# je serai à 0 si ssh ne parvient pas à se connecter
si je == 0 :
print("Autorisation refusée par l'hôte. Connection impossible")
enfant.tuer (0)
# je serai 1 si ssh peut se connecter mais que le terminal n'est pas défini
elif je == 1 :
print('Connecté avec succès.\nLe type de terminal n'est pas défini.')
enfant.ligne d'envoi('vt100')
enfant.attendre('[#\$]')
# je serai 2 si ssh est capable de se connecter et que le terminal est défini
elif i == 2:
print('Connecté avec succès.')
invite = enfant.après
print('Shell Command Prompt :', invite.décoder("utf-8"))

Production

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

La sortie suivante apparaîtra lorsque le script ci-dessus est 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 leurs tâches régulières automatiquement. Les utilisations très basiques du module pexpect de Python ont été décrites dans ce tutoriel en utilisant des exemples simples pour aider les utilisateurs à commencer à travailler avec ce module.

Installez le dernier émulateur Dolphin pour Gamecube et Wii sur Linux
L'émulateur Dolphin vous permet de jouer aux jeux Gamecube et Wii de votre choix sur des ordinateurs personnels Linux (PC). Étant un émulateur de jeu...
Comment utiliser le moteur de triche GameConqueror sous Linux
L'article couvre un guide sur l'utilisation du moteur de triche GameConqueror sous Linux. De nombreux utilisateurs qui jouent à des jeux sur Windows u...
Meilleurs émulateurs de console de jeu pour Linux
Cet article répertorie les logiciels d'émulation de console de jeu populaires disponibles pour Linux. L'émulation est une couche de compatibilité logi...