我有一个命令@" tool --server = commander.company.com登录用户名"提示"密码"。我使用pexpect来运行命令并期待它并使用sendline 发送密码。运行时没有错误,但这些命令似乎没有运行。我怎么知道这实际上跑了?
child = pexpect.spawn ('tool --server=commander.company.com login username')
child.expect('Password:')
child.sendline('#password')
答案 0 :(得分:2)
child.isalive()
和child.status
对于确定命令的执行状态很有用,但是,pexpect.spawn也可以传递给将记录输入和输出的打开文件。然后,您可以查看生成的进程是否按预期执行,例如
import sys
child = pexpect.spawn('tool --server=commander.company.com login username', logfile=sys.stdout)
child.expect('Password:')
child.sendline('#password')
这会将所有输入和输出发送到标准输出流。 logfile_read
和logfile_send
也可能有用。
答案 1 :(得分:0)
您可以在此处查看两件事:
p.isalive()
pexpect.spawn实例的isalive(self)方法 这将测试子进程是否正在运行。这是 无阻塞。如果孩子被终止,那么这将读取 孩子的exitstatus或signalstatus。如果是孩子,则返回True 进程似乎正在运行或否则为False。它可以按字面意思 SECONDS for Solaris返回正确的状态。
p.status
示例:强>
>>> from pexpect import spawn
>>> p = spawn("ls")
>>> p.isalive()
False
>>> p.status
0
有关详细信息,请参阅:pexpect Documetnation