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



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

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

以下是涉及的代码:

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='pwn')[0]

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

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

使用 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]

最新更新