@K1ingleonide

Как запустить код на удаленной машине нестандартными или стандартными средствами Windows?

Приветствую.
Есть человек у которого крутится локальный сервер одной игрушки, IP статичный, суть задачи каким-то образом запускать батник на этой удаленный машине.

В данный момент есть прямое соединение с нужной папкой где я могу модифицировать сервер, там-же лежит батник на ребут сервера.

1. Я пытался использовать psexec, добавил ключ в реестр на удаленной машине, так-же изменил локальную политику безопасности (не помню какой параметр дословно, связано с авторизацией пользователя в системе, изменил ее с гостя на обычный).
Но плодов это не принесло, т.к ловлю "couldn access" по непонятным причинам, права у пользователя под которым сижу в общем доступе есть как на чтение так и запись.

Использованные команды для выполнения кода

psexec \\{remote-ip} -u DevUser -p {simplePassword} cmd /c "echo 1"
psexec \\{remote-ip} -u DevUser -p {simplePassword} cmd /c "\\{remote-ip}\dir\test.bat"
psexec \\{remote-ip} -u DevUser -p {simplePassword} "notepad.exe"
psexec \\{remote-ip} -u DevUser -p {simplePassword} "c:\WINDOWS\notepad.exe"
net use \\{remote-ip}\ipc$ /user:DevUser {simplePassword}
psexec -u d -p {simplePassword} \\{remote-ip} -h -s -d -accepteula cmd.exe

Test-WsMan {remote-ip}
Invoke-Command -ComputerName {remote-ip} -ScriptBlock { Write-Output "test"; } -credential DevUser


2. Есть мысли по поводу того чтобы поднять http сервер, но не знаю какой сервер может заставить обработчик GET запросов исполнять код или запустить тот-же самый батник в директории.
Может быть вы сталкивались с подобными задачами и подскажете http сервер который может решить мой вопрос. Мое видение конфига сервера примерно такое

[GET] Index "start C:\Workshop\Index.bat"
[GET] Help "echo help && start C:\Workshop\help\test.bat"
Солянка выше - от балды, просто чтобы было хотя-бы какое-то понимание задачи.

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

Надеюсь на вашу помощь.
  • Вопрос задан
  • 953 просмотра
Пригласить эксперта
Ответы на вопрос 4
@res2001
Developer, ex-admin
На счет "couldn't access" - мешает UAC. Для его обхода (для удаленного доступа к компу с администраторскими правами) нужно выставить ключ в реестре:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
LocalAccountTokenFilterPolicy [REG_DWORD] = 1
И, конечно, выполнять нужно от пользователя с правами администратора.
psexec - нормально работает.
Есть и родное средство - wmic.
Для wmic можно задать в опциях имя удаленного пользователя и пароль (см. wmic /?). Пользователь так же должен иметь администраторские права на удаленном компьютере.
Есть еще winrm, но сходу не скажу как его правильно готовить.

PS: средства удаленного запуска в винде предназначены для нужд администратора, поэтому везде требуется администраторские права. Если нужно без админских прав, то можно настроить удаленный рабочий стол и пусть чел заходит по RDP и запускает что надо руками.

PPS: если приложение как-то взаимодействует с пользовательским интерфейсом (открывает окна и т.д. и т.п.), то при удаленном запуске через psexec или wmic могут быть трудности, т.к. для удаленного запуска создается отдельный пользовательский сеанс не связанный с локальным сеансом. Соответственно приложению негде будет открывать свои окна. Из-за этого может быть не возможно удаленно запустить приложение. Консольные приложения запускаются нормально - они автоматически перенаправляют вывод на ваш удаленный компьютер. В psexec для разрешения приложению открывать окна нужно использовать ключ -i. В wmic подобного ключа, по моему, нет.
Ответ написан
GavriKos
@GavriKos
Используйте telnet или ssh.
Ответ написан
Jump
@Jump Куратор тега Системное администрирование
Системный администратор со стажем.
Если есть доступ к файлам, то возможен еще и костыльный но вполне рабочий вариант с батником.
Создаете задачу в шедулере на запуск батника через каждые пять минут к примеру.
Батник у вас пустой. Ничего не просходит.
Как надо что-то сделать - записываете в батник нужные команды.
При следующем запуске они исполнятся.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Системное администрирование
software engineer
Вариант 1. Поставьте на комп openssh сервер и подключайтесь по ssh в командную строку.

Вариант 2. Любой веб-сервер позволит вам выполнить батник обычным методом - в mybat.php можно встроить exec внешней команды

Вариант 3. Apache HTTPD позволяет выполнять CGI, то есть вы можете заставить его выполнять ваши батники.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы