2014-05-23 7 views
3

J'ai une commande @ "tool --server = commandant.company.com nom d'utilisateur de connexion" qui invite pour "mot de passe". J'utilise pexpect pour exécuter la commande et l'attendre et en utilisant sendline à envoyer le mot de passe. Il n'y a pas d'erreur quand je l'exécute, mais ces commandes ne semblent pas fonctionner. Comment puis-je savoir que cela a réellement fonctionné?comment savoir commande pexpect effectivement couru?

child = pexpect.spawn ('tool --server=commander.company.com login username') 
child.expect('Password:') 
child.sendline('#password') 

Répondre

2

child.isalive() et child.status sont utiles pour déterminer la virgule Statut d'exécution nd, cependant, pexpect.spawn peut également être passé un fichier ouvert à laquelle l'entrée et la sortie seront enregistrées. Vous pouvez ensuite voir si le processus engendré s'exécute comme prévu, par ex.

import sys 
child = pexpect.spawn('tool --server=commander.company.com login username', logfile=sys.stdout) 
child.expect('Password:') 
child.sendline('#password') 

Ceci enverra toutes les entrées et sorties à votre flux de sortie standard. logfile_read et logfile_send pourraient également être utiles.

0

Il y a deux choses possibles que vous pouvez vérifier ici:

  • p.isalive()

méthode isalive (auto) de l'instance pexpect.spawn Ce test si le processus enfant est en cours d'exécution ou non. Ceci est non-bloquant. Si l'enfant a été interrompu, cela affichera le exitstatus ou l'état du signal de l'enfant. Ceci renvoie True si le processus enfant semble être en cours d'exécution ou Faux dans le cas contraire. Il peut prendre littéralement SECONDS pour Solaris pour renvoyer le bon état.

  • p.status

Exemple:

>>> from pexpect import spawn 
>>> p = spawn("ls") 
>>> p.isalive() 
False 
>>> p.status 
0 

Pour plus de détails: pexpect Documetnation