Я использую pexpect для запуска ряда команд на удаленную машину и хотел бы получить статус выхода каждой команды. Однако, когда я пытаюсь получить статус выхода, я получаю неправильное значение. Есть ли способ получить правильный статус выхода с помощью pxssh из Pexpect? Вот код, который я пробовал вместе с выходом. Команда прошла успешно, но состояние выхода дано было 255 вместо 0.Python Pexpect pxssh Получение статуса выхода
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)
Выход:
uptime
09:10:39 up 10 days, 17:35, 4 users, load average: 0.12, 0.18, 0.16
s exitstatus= 255
Спасибо, что точно ответил на мой вопрос. Еще один вопрос о последующих действиях заключается в том, что вам нужно распечатать только вывод команды вместо команды и вывода? – MBasith
1) Вы можете разобрать строку, используя функции Python; 2) Вы можете попробовать 'sendline ('stty -echo')' перед отправкой других команд. Не так просто вставить примерный код в комментарии. Вы можете задать новый вопрос. – pynexj