如何将变量传递给子进程通信

时间:2014-01-03 01:41:32

标签: python subprocess popen

我是python的新手,并在SO和google上就此问题进行了多次搜索。

如何将变量pw(用户密码)传递给popen.communicate的输入?

以下是涉及的代码:

pw = getpass.getpass()
from subprocess import Popen, PIPE, STDOUT
            ssh_conn = Popen(["ssh", "-t", server, "sudo -S cp /etc/"+map, "/etc/"+map + "." +fulltime], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
            ssh_conn.communicate(input='pw\n')[0]

上面的代码似乎将字符串'pw'发送到标准输入,而我希望发送变量pw的值。

我意识到这种方法不太理想,并且还有其他python模块可以更简单地完成工作,但我无法安装任何其他模块。

1 个答案:

答案 0 :(得分:3)

使用str.format将密码插入字符串:

pw = getpass.getpass()
from subprocess import Popen, PIPE, STDOUT
ssh_conn = Popen(["ssh", "-t", server, "sudo -S cp /etc/"+map, "/etc/"+map + "." +fulltime], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
ssh_conn.communicate(input='{0}\n'.format(pw))[0]