我是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]