如何执行
echo xyz | ssh [host]
(将xyz发送给主机) 用python?
我尝试过pexpect
pexpect.spawn('echo xyz | ssh [host]')
但正在执行
echo 'xyz | ssh [host]'
也许其他包会更好?
答案 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]