首页 > 解决方案 > subprocess.Popen vs os.system;带有交互的 ssh 命令

问题描述

我正在尝试编写一个脚本来在远程服务器上执行任务。有一个名为foo该命令的变量存储在其中。如下所示。

foo = "ssh -t -p 200 username@remoteserver -C -Y "sudo <any command that requires sudo>" 

问题

运行os.system(foo)时,我能够从服务器获得响应,要求输入 sudo 密码。这是完美的,但是我知道使用 os.system 已经并且 subprocess 是in

所以我尝试切换到子进程并在运行时:

subprocess.Popen(foo, shell=True, universal_newlines=True, stdout=subprocess.PIPE).wait()

我没有从服务器收到要求我输入 sudo 密码的响应。所以最终,我爆发了,因为它不起作用。

谁能帮我解决这个问题?我到处都看过并且相信communicate()必须使用它,但是我真的很困惑它是如何工作的。

标签: pythonpython-3.x

解决方案


推荐阅读