我正在使用子进程.Popen()在python中运行linux命令。
我尝试使用这个命令将ssh连接到另一台机器上,看看它是否提示我输入密码。在
但是,我不知道如何获取结果提示并在python脚本中使用它。在
例如,如果我使用子流程.Popen()要调用命令“echo Hello World”,我可以使用communicate()方法从运行该命令获取结果stdout。在
但我要做的是:
使用Popen()运行:ssh-hostname-'echo Hello',然后获取结果以在python脚本中使用。因此,如果ssh遇到输入密码的提示,我希望能够在python脚本中将该提示符的输出用作字符串。最后,我希望能够退出这个提示(相当于在使用linux终端时键入^C)。但是,当使用Popen()和communicate()时,它只会在实际的linux stdout上显示提示,而不会获取提示。在
我也希望从终端上抑制这个提示。在
以下是我一直在使用的代码(在获取正常stdout时,此代码有效):p = subprocess.Popen(["ssh", hostName, "echo Hello"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
sshOutput, err = p.communicate()
当然,密码提示不会存储在sshOutput中,这就是问题所在。如果我运行以下命令,结果将是一个包含“Hello”的字符串
^{pr2}$