Как получить доступ к графическому интерфейсу для компьютера с Windows через ssh на компьютере Mac?

Я пытаюсь реализовать структуру автоматизации, где я хочу запустить скрипт на python для запуска файла Windows .exe(например, блокнота) с помощью ssh с компьютера Mac.

Я уже рассматривал X11, openssh, freessh.

Я могу запустить скрипт python, но, поскольку у меня нет доступа к графическому интерфейсу на компьютере с Windows, я не вижу запуска блокнота.

Кроме того, экспорт Display не подходит для Windows.

Буду очень признателен, если кто-нибудь подскажет, как это реализовать.

Заранее спасибо!


person internalerror404    schedule 24.07.2014    source источник
comment
Здравствуйте, спасибо за ответ. По сути, мы хотим управлять графическим интерфейсом Windows с клиентской машины на базе Linux через наши сценарии. Мы хотим запустить сценарий автоматизации Windows на гостевой виртуальной машине (ОС Windows) с хост-машины с ОС Linux.   -  person internalerror404    schedule 24.07.2014
comment
superuser.com/questions/531787/   -  person internalerror404    schedule 30.07.2014


Ответы (4)


Это решило мою проблему:

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

Спасибо за ответы!

В основном просто установите Cygwin SSH и используйте экран для получения графического интерфейса. Поможет даже архитектура на основе Pyro/RPyC.

person internalerror404    schedule 30.07.2014
comment
Позже я использовал простой клиентский сервер на основе сокетов, чтобы включить это. - person internalerror404; 08.11.2014

Один из вариантов — использовать Parallels в OSX, другой — RDP (версия SSH + VNC для Windows) на сервер.

(Мне не совсем понятно, чего вы пытаетесь достичь)

person ZZ9    schedule 24.07.2014
comment
Здравствуйте, спасибо за ответ. По сути, мы хотим управлять графическим интерфейсом Windows с клиентской машины на базе Linux через наши сценарии. Мы хотим запустить сценарий автоматизации Windows на гостевой виртуальной машине (ОС Windows) с хост-машины с Linux. - person internalerror404; 24.07.2014
comment
О, хорошо, вам нужен SSH-сервер для Windows с RDP. Я рекомендую использовать OpenSSH с CygWin, а затем объединить его с клиентом сервера терминалов (tsclient) для установки RDP-соединения. Или просто используйте VNC для Windows. - person ZZ9; 24.07.2014

Вы можете использовать AutoHotkey для определения существования окна. Насколько я знаю, вы можете использовать AutoHotkey из python. Я не могу дать точных ссылок, как использовать AutoHotkey из python (я не знаком с python), но в google есть много ссылок, если вы ищете «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.
}

Всегда используйте AutoHotkey с http://ahkscript.org/ (текущая версия, новый официальный сайт)! AutoHotkey с сайта autohotkey.com устарел!

person vasili111    schedule 24.07.2014

Наиболее надежным решением может быть использование Jenkins. Шаги настройки довольно просты:

  • Установите сервер Jenkins на свой Mac (он также отлично работает в Linux).
  • На виртуальной машине Windows установите Java и следуйте документам Jenkins, описывающим как настроить узел Windows.
  • После подключения виртуальной машины Windows к серверу Jenkins попробуйте создать задание в веб-интерфейсе Jenkins и посмотрите, сможет ли сервер запустить его на виртуальной машине Windows.
  • После прохождения задания вы можете запустить его удаленно из другого скрипта (скажем, с упомянутого вами хоста Linux) с помощью Jenkins API удаленного доступа. Или, если человек будет запускать задание удаленно, он может просто использовать веб-интерфейс.

Одно важное замечание:

В зависимости от потребностей вашего тестируемого приложения вам может потребоваться оставить пользователя, вошедшего в систему Windows на постоянной основе (чтобы присутствовал интерактивный рабочий стол), и убедиться, что агент Jenkins работает в этом пользовательском сеансе. Такая установка отлично работала для меня в прошлом, когда я тестировал приложения с графическим интерфейсом в Windows и сообщал о результатах хосту Linux.

Преимущество Jenkins заключается в том, что он очень хорошо заботится о передаче статуса выхода и текстовом выводе приложения Windows обратно на сервер Jenkins, чтобы сервер мог уведомить вас, если что-то пойдет не так. Такая система может быть довольно хрупкой и трудоемкой для настройки, если Jenkins не используется.

person Bill Agee    schedule 26.07.2014
comment
Единственная проблема с jenkins может быть при подключении агента с помощью ssh (что является более надежным способом). Я думаю, что канал ssh не будет иметь доступа к сеансу рабочего стола, на котором выполнен вход. - person Muhammad Faizan-Ul-Haq; 23.03.2021