我有一个在本地计算机上的 Ubuntu 中运行的 Python 程序。在程序的某个时刻,我连接到两台远程机器:一台运行 Ubuntu,另一台运行 Windows。我有连接到这些机器的 IP 地址、名称和密码。本地机器向远程机器发送命令,远程机器发送响应。现在我只是想让远程机器回显“你好”回本地机器。我可以使用以下命令从本地机器的命令行远程访问这两台机器:
sshpass -p password ssh -X name@ipaddress
其中密码、名称 和ip 地址 已正确填写每台机器。所以我知道我可以远程访问两台机器。从那里我可以运行任何命令,就好像我在本地那台机器上一样。
但是,我想在发送简单的 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 服务器时,我还需要做其他事情吗?先感谢您。
我查看了标准错误,其中包括以下列表:
['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']
最佳答案
目标机器很可能没有安装类似 Linux 的命令。安装类似 Cygwin 的东西在 Windows 机器上。
关于python - 从 Ubuntu 远程连接到 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46532349/