我有一个Python程序,我在本地机器上运行在Ubuntu上。在程序期间的某个时刻,我连接到两台远程机器:一台运行Ubuntu,另一台运行Windows。我有连接这些机器的IP地址,名称和密码。本地计算机向远程计算机发送命令,远程计算机发送响应。现在我只是试图让远程机器回应“你好'回到本地机器。我可以使用以下命令在本地计算机的命令行上远程访问这两台计算机:
sshpass -p password ssh -X name@ipaddress
其中密码,名称和 ipaddress 已正确填写每台计算机。所以我知道我可以远程进入两台机器。从那里我可以运行任何命令,就好像我在本地的那台机器上一样。
但是,我希望在发送一个简单的echo 'hello'
指令时从我的程序中执行此操作。我可以通过远程Ubuntu服务器成功实现此目的:
from subprocess import Popen, PIPE
cmd = ["sshpass", "-p", password, "ssh", "-X", name+"@"+ipaddress, "echo 'hello'"]
ssh = Popen(cmd, stdout=PIPE, stderr=PIPE)
print ssh.stdout.readlines()
密码,名称和 ipaddress 是此点已定义的变量。这适用于Ubuntu远程服务器,它返回以下列表:
['hello\n']
这很好,但是当我在Windows服务器上尝试相同的操作时,我得到一个空列表:
[]
我尝试了各种命令,但我总是得到一个空列表。连接到Windows服务器时,我还需要做些什么或不同的事情吗?先感谢您。
我查看了stderr,其中包括以下列表:
['X11 forwarding request failed on channel 0\r\n', 'exec request failed on channel 0\r\n']
如果我不包含-X标记,那么我只会收到第二个错误:
['exec request failed on channel 0\r\n']