怎么知道pexpect命令竟然跑了?

时间:2014-05-23 01:56:43

标签: python pexpect

我有一个命令@" tool --server = commander.company.com登录用户名"提示"密码"。我使用pexpect来运行命令并期待它并使用sendline 发送密码。运行时没有错误,但这些命令似乎没有运行。我怎么知道这实际上跑了?

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

2 个答案:

答案 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_readlogfile_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