从Ubuntu远程连接到Windows

3
我有一个在Ubuntu本地机器上运行的Python程序。在程序的某个时刻,我会连接到两台远程机器:一台运行Ubuntu,另一台运行Windows。我已经拥有了连接这些机器所需的IP地址、名称和密码。本地机器向远程机器发送命令,而远程机器则发送响应。目前,我只是想让远程机器回显“hello”给本地机器。我可以在本地机器上使用以下命令行远程登录这两台机器:
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()

密码名称IP地址是已经定义的变量。这适用于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']
1个回答

0
目标计算机很可能没有安装类似Linux的命令。在Windows计算机上安装类似Cygwin的东西。

谢谢回复,但问题在于如果我手动在命令行中输入命令,我可以从Windows服务器获得响应,但是当我尝试在Python脚本中自动化该过程时,我没有得到任何响应。然而,当我从Ubuntu连接到Ubuntu时,我没有任何问题。 - MCSquared78

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接