我有stdout用于popen命令的代码,现在我如何修改以便可以向stdin发送内容。
def runcmd(command, stdin_in):
output = {"result": [], "error": [], "exit_status": []}
ch = subprocess.Popen(command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
close_fds=True)
output["result"], output["error"] = ch.communicate() #capture it
输出[“结果”],输出[“错误”] = ch.communicate(输入= stdin_in)[0] #STUCK print output [“result”]#works
def main():
password_string = "abc123"
runcmd ("myprogram hostname" , password_string)
if __name__ == '__main__':
main()
所以我可以将密码字符串发送到myprogram?
------修改-----------
output = {"result": [], "error": [], "exit_status": []}
ch = subprocess.Popen(command,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
close_fds=True)
output= ch.communicate(input=stdin_in)
print output[1] # Prints ('', 'Password: ')
-----------修改2 ------------
class Actions():
def console(self):
return subprocess.Popen("myprogram",
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
close_fds=True)
def password(self, passw):
delete = self.console().communicate("%s" % (passw))
return(delete)
def main():
password_string = "abc123"
print Actions().password(password_string)
('','密码:')