执行echo xyz | ssh ...用python

时间:2014-12-23 13:06:14

标签: python pexpect

如何执行

echo xyz | ssh [host]

(将xyz发送给主机) 用python?

我尝试过pexpect

pexpect.spawn('echo xyz | ssh [host]')

但正在执行

echo 'xyz | ssh [host]'

也许其他包会更好?

2 个答案:

答案 0 :(得分:2)

http://pexpect.sourceforge.net/pexpect.html#spawn

给出一个使用管道运行命令的示例:

shell_cmd = 'ls -l | grep LOG > log_list.txt'
child = pexpect.spawn('/bin/bash', ['-c', shell_cmd])
child.expect(pexpect.EOF)

先前错误的尝试已删除,以确保没有人对此感到困惑。

答案 1 :(得分:0)

您不需要pexpect来模拟简单的shell管道。模拟管道的最简单方法是os.system函数:

os.system("echo xyz | ssh [host]")

更Pythonic方法是使用the subprocess module

p = subprocess.Popen(["ssh", "host"],
                     stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write("xyz\n")
output = p.communicate()[0]