sCMD = 'ssh user@host cat some/path | grep "Oct 31\|Oct 30"'
child = pexpect.spawn(sCMD)
try:
child.expect("assword")
except pexpect.EOF:
raise Exception("Cannot connect to host")
child.sendline(ssh_pass)
lData = [s.strip(' \n\r:') for s in child.readlines()]
lData [0]读取“No such file or directory”
如果我将第一行更改为:
sCMD = 'ssh user@host cat some/path'
然后lData包含文件中的所有行。
但是如果我在终端中执行完全相同的命令(使用grep)它可以正常工作 - 它会返回我期望的文本。没有抱怨。
知道为什么命令在通过pexpect执行时表现不同?
答案 0 :(得分:0)
sCMD = 'ssh user@host \'cat some/path | grep "Oct 31\|Oct 30"\''
出于某种原因,pexpect需要那些额外的单引号。