我正在尝试编写一个脚本来在远程服务器上执行任务。有一个名为foo
的变量,命令存储在其中。如下所示。
foo = "ssh -t -p 200 username@remoteserver -C -Y "sudo <any command that requires sudo>"
The Probem
运行os.system(foo)
时,我可以从服务器回复询问sudo密码。这是完美的,但是我知道使用os.system是 out 而子进程是 。
所以我尝试切换到子进程并在运行时:
subprocess.Popen(foo, shell=True, universal_newlines=True, stdout=subprocess.PIPE).wait()
我没有收到服务器的回复,询问我的sudo密码。所以最终,我爆发,因为它不起作用。
有人可以帮我解决这个问题吗?我到处寻找并认为必须使用communicate()
,但我真的很困惑它是如何工作的。