【问题标题】:How to get GUI access for a windows machine through ssh on a mac machine?如何在 Mac 机器上通过 ssh 获取 Windows 机器的 GUI 访问权限?
【发布时间】:2014-11-08 08:57:10
【问题描述】:

我正在尝试实现一个自动化框架,我想在 python 中运行一个脚本,通过使用来自 mac 机器的 ssh 来启动 windows .exe 文件(例如记事本)。

我已经考虑过 X11、openssh、freessh。

我可以运行 python 脚本,但是由于我在 windows 机器上没有 GUI 访问权限,所以我看不到记事本正在启动。

此外,导出显示不是 windows 的选项。

如果有人可以让我知道如何实施,我将不胜感激。

提前致谢!

【问题讨论】:

  • 您好,感谢您的回复。基本上,我们想通过我们的脚本从基于客户端 linux 的机器上控制 windows gui。我们想从具有 linux 操作系统的主机上在来宾虚拟机(windows os)上运行 Windows 自动化脚本。

标签: windows ssh automation openssh


【解决方案1】:

这解决了我的问题:

https://superuser.com/questions/531787/starting-windows-gui-program-in-windows-through-cygwin-sshd-from-ssh-client

感谢您的回答!

基本上只需安装 Cygwin SSH 并使用屏幕检索 GUI。即使是基于 Pyro/RPyC 的架构也会有所帮助。

【讨论】:

  • 我后来使用简单的基于套接字的客户端服务器来启用它。
【解决方案2】:

一种选择是在 OSX 中使用 Parallels,另一种选择是 RDP(Windows 版本的 SSH + VNC)进入服务器。

(我不清楚你到底想达到什么目的)

【讨论】:

  • 您好,感谢您的回复。基本上,我们想通过我们的脚本从基于客户端 linux 的机器上控制 windows gui。我们想从具有 linux 的主机上在来宾虚拟机(windows os)上运行 Windows 自动化脚本。
  • 哦,好的,您需要的是带有 RDP 的 Windows SSH 服务器。我建议将 OpenSSH 与 CygWin 一起使用,然后将其与终端服务器客户端 (tsclient) 结合使用以建立 RDP 连接。或者只使用 Windows 的 VNC。
【解决方案3】:

您可以使用 AutoHotkey 来检测窗口是否存在。据我所知,您可以使用 python 中的 AutoHotkey。我无法给出如何使用 python 中的 AutoHotkey 的确切链接(我不熟悉 python),但如果你搜索“autohotkey python”,谷歌中有很多链接。这是用于检测窗口是否存在并在这种情况下执行一些代码的 AutoHotkey 代码。

Loop
{
    SetTitleMatchMode, 2 ;sets to window's title can contain WinTitle anywhere inside it to be a match. So we can match Notepad Wintitle only with "Notepad". In that case we dont need Notepad exact Wintitle.
    IfWinExist, Notepad
    {
        ;Here should be any code that is executed if window exests.
    }
    Sleep, 1000 ; That command allows to check window every 1sec(1000 milliseconds). You can change that value or complitly remove that command.
}

始终使用来自http://ahkscript.org/ 的 AutoHotkey(当前版本,新官网)!来自 autohotkey.com 的 AutoHotkey 已过时!

【讨论】:

    【解决方案4】:

    最可靠的解决方案可能是使用 Jenkins。设置步骤相当简单:

    • 在您的 Mac 上安装 Jenkins 服务器(在 Linux 上也可以正常工作)。
    • 在您的 Windows VM 上,安装 Java 并按照描述 how to set up a Windows node 的 Jenkins 文档进行操作。
    • Windows VM 连接到 Jenkins 服务器后,尝试在 Jenkins Web UI 中创建作业,并查看服务器是否可以在 Windows VM 上运行它。
    • 一旦任务通过,您可以使用 Jenkins remote access API 从另一个脚本(例如,从您提到的 Linux 主机)远程启动它。或者,如果有人要远程启动作业,他们可以简单地使用网络 UI。

    一个重要提示:

    根据被测应用程序的需要,您可能需要让用户永久登录到 Windows 机器(以便出现交互式桌面),并确保 Jenkins 代理正在该用户会话中运行.过去,我在 Windows 上测试 GUI 应用程序并将结果报告回 Linux 主机时,这种设置对我来说效果很好。

    Jenkins 的优势在于它非常好地将 Windows 应用程序的退出状态和文本输出传输回 Jenkins 服务器,以便服务器可以在出现任何问题时通知您。如果不使用 Jenkins,这种系统的设置可能会非常脆弱且耗时。

    【讨论】:

    • jenkins 的唯一问题可能是当您使用 ssh 连接代理时(这是更可靠的方式)我认为,ssh 通道将无法访问已登录的桌面会话。
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2016-11-06
    • 2020-08-14
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多