J'utilise pexpect pour exécuter une série de commandes sur une machine distante et j'aimerais obtenir le statut de sortie de chaque commande. Toutefois, lorsque j'essaie de récupérer le statut de sortie, j'obtiens la valeur incorrecte. Est-il possible d'obtenir le bon état de sortie en utilisant pxssh de Pexpect? Voici le code que j'ai essayé avec la sortie. La commande a réussi, mais l'état de sortie donnée était de 255 au lieu de 0.Python Pexpect pxssh Obtention du statut de sortie
from pexpect import pxssh
try:
s = pxssh.pxssh(timeout=30, maxread=2000000, options={
"StrictHostKeyChecking": "no",
"UserKnownHostsFile": "/dev/null"})
hostname = 'my_hostname'
username = 'username'
password = 'my_pass'
s.login (hostname, username, password, port=22, auto_prompt_reset=False)
s.PROMPT = '*$'
s.sendline('uptime')
s.prompt()
print(s.before.decode('utf-8'))
s.close()
print('s exitstatus=', s.exitstatus)
except pxssh.ExceptionPxssh as e:
print("pxssh failed on login.")
print(e)
Sortie:
uptime
09:10:39 up 10 days, 17:35, 4 users, load average: 0.12, 0.18, 0.16
s exitstatus= 255
Merci de répondre précisément à ma question. Une autre question de suivi est là pour imprimer seulement la sortie de la commande au lieu de la commande et de la sortie? – MBasith
1) Vous pouvez analyser la chaîne à l'aide des fonctions Python; 2) Vous pouvez essayer 'sendline ('stty -echo')' avant d'envoyer d'autres commandes. Il n'est pas facile de coller un exemple de code dans les commentaires. Vous pouvez poser une nouvelle question. – pynexj