【问题标题】:Remote connect to Windows from Ubuntu从 Ubuntu 远程连接到 Windows
【发布时间】:2018-03-13 22:16:28
【问题描述】:

我有一个 Python 程序,我在本地机器上的 Ubuntu 中运行。在程序的某个时刻,我连接到两台远程机器:一台运行 Ubuntu,另一台运行 Windows。我有连接到这些机器的 IP 地址、名称和密码。本地机器向远程机器发送命令,远程机器发送响应。现在我只是想让远程机器回显“你好”到本地机器。我可以使用以下命令从本地机器的命令行远程访问这两台机器:

sshpass -p password ssh -X name@ipaddress

其中 passwordnameipaddress 为每台机器正确填写。所以我知道我可以远程访问两台机器就好了。从那里我可以像在本地机器上一样运行任何命令。

但是,我想在我的程序中执行此操作,同时发送一个简单的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()

passwordnameipaddress 是此时已经定义的变量。这适用于 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']

【问题讨论】:

    标签: python windows ubuntu ssh popen


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,但问题是如果我在命令行中手动键入命令,我可以从 Windows 服务器获得响应,但是当我尝试在Python 脚本我没有得到任何响应。但是,当我从 Ubuntu 连接到 Ubuntu 时,我没有任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多