我是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模块可以更简单地完成工作,但我无法安装任何其他模块。
答案 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]