Python Pexpect pxssh 获取退出状态
Python Pexpect pxssh Getting the Exit Status
我正在使用 pexpect 向远程机器发送 运行 一系列命令,并希望获得每个命令的退出状态。但是,当我尝试检索退出状态时,我得到的值不正确。有没有办法使用 Pexpect 的 pxssh 获得正确的退出状态?这是我尝试过的代码以及输出。命令成功,但给出的退出状态是 255 而不是 0。
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
.exitstatus
是ssh
进程的退出状态。请参阅以下示例以了解如何在 ssh 会话中获取命令 运行 的退出状态:
>>> ssh = pxssh.pxssh()
>>> ssh.login('127.0.0.1', 'root', 'passwd')
True
>>> ssh.sendline('ls not-found')
13
>>> ssh.prompt()
True
>>> ssh.before
'ls not-found\r\nls: cannot access not-found: No such file or directory\r\n'
>>> ssh.sendline('echo $?')
8
>>> ssh.prompt()
True
>>> ssh.before
'echo $?\r\n2\r\n'
>>> ssh.before.split('\r\n')[1]
'2' <-- This is the ls command's exit status
>>>
我正在使用 pexpect 向远程机器发送 运行 一系列命令,并希望获得每个命令的退出状态。但是,当我尝试检索退出状态时,我得到的值不正确。有没有办法使用 Pexpect 的 pxssh 获得正确的退出状态?这是我尝试过的代码以及输出。命令成功,但给出的退出状态是 255 而不是 0。
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
.exitstatus
是ssh
进程的退出状态。请参阅以下示例以了解如何在 ssh 会话中获取命令 运行 的退出状态:
>>> ssh = pxssh.pxssh()
>>> ssh.login('127.0.0.1', 'root', 'passwd')
True
>>> ssh.sendline('ls not-found')
13
>>> ssh.prompt()
True
>>> ssh.before
'ls not-found\r\nls: cannot access not-found: No such file or directory\r\n'
>>> ssh.sendline('echo $?')
8
>>> ssh.prompt()
True
>>> ssh.before
'echo $?\r\n2\r\n'
>>> ssh.before.split('\r\n')[1]
'2' <-- This is the ls command's exit status
>>>