Назад | Перейти на главную страницу

Есть ли легкий способ запустить приложение на удаленной машине win7 из Linux?

Я пытаюсь найти легкий способ запустить приложение на удаленном компьютере с Windows7 из Linux.

Ниже приведены мои граничные условия:

Использование psExec с другой машины Windows7 работает, но мне нужно запустить процесс на машине Windows с хоста Linux.

Редактировать:

Я могу установить дополнительное программное обеспечение, но не хочу устанавливать mysys или cygwin.

Приложение должно запускаться немедленно (то есть как только Linux-машина запускает "запустить приложение"). Опрос IMO не вариант.

Как я выяснил, предупреждение windows7 показывает, когда следует вызывать команду из winexe, это функция, называемая "изоляция сеанса 0" и не нашли способ убрать его.

Я знаю, что этой теме 3 года, но вот решение, которое я нашел.

По какой-то причине параметр winexe '--interactive = 1' не ведет себя как параметр '-i' в psexec. С Winexe пользователю все равно придется принять диалоговое окно «Обнаружение интерактивной службы».

Возможное решение:

1 - использование smbclient или общих ресурсов CIFS для загрузки psexec на компьютер с Windows. 2 - (необязательно) загрузка программы с графическим интерфейсом, которую вы хотите запустить. 3 - запуск программы с графическим интерфейсом через psexec через winexe. Как это:

winexe --uninstall --interactive=0 -U 'WinAdmin%WinAdminPasswd' //1.2.3.4 '\windows\temp\psexec.exe -i \\127.0.0.1 -u WinAdmin -p WinAdminPasswd notepad.exe

И блокнот успешно появится на рабочем столе вошедшего в систему пользователя.

Если диалоговое окно «Обнаружение интерактивных служб» по-прежнему отображается, службу необходимо предварительно отключить, а затем снова включить:

winexe --interactive=0 -U 'WinAdmin%WinAdminPasswd' //1.2.3.4 'cmd /c sc config UI0detect start= disabled > NUL & sc stop UI0detect > NUL'
// (do your stuff)
winexe --interactive=0 -U 'WinAdmin%WinAdminPasswd' //1.2.3.4 'cmd /c sc config UI0detect start= manual > NUL & sc start UI0detect > NUL'

RSHD сделает именно то, что вы ищете. Он может работать в контексте текущего пользователя, вошедшего в систему, и прослушивает порт на предмет входящих подключений от предварительно авторизованных хостов. Вы можете отправить команду (например, calc.exe), и приложение появится на рабочем столе пользователя.

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

Редактировать в ответ на комментарий:

Я использовал вот этот в прошлом делать именно то, что вы просите. Это легкий, просто отдельный двоичный файл.

Во-первых, на ПК с Windows создайте файл rhosts и сохраните его как c:\windowsrhosts (обратите внимание, что это не опечатка, этот файл существует в корне диска C :.) Файл должен содержать полное доменное имя удаленного компьютера Linux, с которого вы собираетесь подключиться, за которым следует имя пользователя, например

remotepc.example.com bryan

Затем создайте командный файл, который выполняется при входе в систему, с помощью следующей команды

rshd.exe -d

В результате останется окно командной строки, которое вы можете свернуть.

Загрузите клиент RSH на свой компьютер с Linux (я тестировал только клиент Windows RSH)

Я только что протестировал и запустил calc с помощью следующей команды

rsh windowspc.example.com -l bryan calc

... и на рабочем столе Windows появился файл calc.exe.

Вы сказали, что не хотите устанавливать cygwin, но готовы ли вы установить что-нибудь еще на компьютер с Windows? Вы можете установить SSH-сервер на компьютер с Windows или установить функцию telnet-сервера (не очень безопасный, не рекомендуется, если компьютер не защищен брандмауэром).

Другой вариант - нечто большее, чем кладж. Затем разместите где-нибудь пустой командный файл, скажем, общий ресурс samba на вашем компьютере с Linux, с доступом для чтения / записи. Затем создайте задачу на компьютере с Windows 7, которая запускает другой пакетный файл каждые 5 минут. В указанном сценарии первая строка загрузит пустой сценарий на компьютер с Windows 7, а вторая строка вызовет этот пакетный файл как сценарий, вызывающий другой сценарий. Обычно этот файл пустой, поэтому при запуске задачи она загружает пустой сценарий, затем вызывает этот сценарий (который ничего не делает), а затем завершает работу. Если вы хотите «запустить команду», просто измените свой сценарий, чтобы указанная команда была первой строкой и второй строкой, которая затирает (обычно пустой) сценарий в общей папке, перезаписывая его пустым файлом (чтобы ваша команда не выполняется во второй раз).

Я бы просто установил SSH-сервер и SSH, но полагаю, что это может быть способ сделать это "из коробки" без необходимости установки единственного бита программного обеспечения на ПК с Windows ...

Как насчет клиента RDP или VNC из Linux - например, Remmina (вы можете определить глубину разрешения экрана, даже учетные данные Windows) или krdc. Для RDP вам не нужно ничего устанавливать - просто включите удаленный рабочий стол