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

Удаленное выключение рабочей станции Windows (из Linux)

У меня есть система, состоящая, скажем, из 10 рабочих станций Windows 7 Professional, объединенных в домен.

Как часть процедуры «аварийного» выключения системы, мне нужен механизм запуска удаленного выключения с контроллера Linux (который, в свою очередь, является инструментом оркестровки служб). Слово «чрезвычайная ситуация» заключено в кавычки, потому что это не действительно чрезвычайной ситуации, но все же нужен механизм, отличный от простого указания пользователям выключить рабочие станции.

Итак, я посмотрел на psexec, что почти идеально, за исключением того, что запускается только с другой машины Windows. .. Я полагаю, что сервер Windows запускает процедуру выключения рабочей станции, но это не идеально.

Я понял, что один из вариантов - установить Cygwin и OpenSSH, но, честно говоря, это кажется громоздкий.

В идеале мне бы хотелось ... Это программа, которая работает как служба с привилегиями локального (или доменного) администратора, прослушивает порт для зашифрованного SSL вызова RESTful API, например, http://workstation:8888/admin/shutdown?key=secretsharedkey.

Нужно ли мне что-то писать на C # .net, или есть инструмент для кросс-платформенного запуска выключения рабочей станции Windows?

Как насчет использования net инструмент из пакета Samba?

Например:

net rpc shutdown -S workstation1 -U Administrator -w example.com

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

Ты можешь использовать Winexe. Он использует вызов RPC для установки службы на целевом компьютере, а затем использует эту службу для выполнения команд на нем. Вы можете указать учетные данные, и сервер Linux не обязательно должен быть членом домена.

Остерегайтесь этого является хотя на основе кода Samba;)

RPC - это способ, но может потребоваться дополнительная настройка, особенно для Windows Vista, Windows 7 и других версий Windows, чтобы обеспечить удаленное завершение работы:

A) Часть настройки, которую необходимо выполнить на машине Win7:

1) запустите secpol.msc

  • в дереве программы откройте «Настройки безопасности / Локальные политики / Назначение прав пользователя»

  • Найдите запись «Принудительное завершение работы из удаленной системы».

  • Отредактируйте запись, добавьте пользователя CONCRETE, который будет использоваться для выключения (например, nouknouk)

2) Запустите regedit.exe от имени администратора.

  • найдите HKLM / SOFTWARE / Microsoft / Windows / CurrentVersion / Policies / System

  • создайте новое значение DWORD (32) реестра с именем «LocalAccountTokenFilterPolicy» и затем присвойте ему значение «1»

3) Настройте службу удаленного реестра:

  • откройте «cmd.exe» от имени администратора

  • выполните две следующие команды:

    sc config RemoteRegistry start = авто

    sc запустить RemoteRegistry

Б) Часть настройки, выполняемая на Linux-машине:

1) установите пакет "samba-common":

Это зависит от вашего дистрибутива Linux, но для Debian и производных (Ubuntu, Linux Mint, ...) команда apt-get может выполняться следующим образом:

apt-get install samba-common

2) Чтобы фактически выключить ваш windowsmachine из linux, выполните следующую команду:

net rpc shutdown -f -t 0 -C 'сообщение' -U имя пользователя% пароль -I xxx.yyy.zzz.ttt

Куда:

  • '-f' означает принудительное завершение работы (я думаю, что это обязательно)

  • '-t 0' - задержка перед выполнением (0 означает «прямо сейчас»).

  • '-U user% password' - это локальный пользователь и его пароль на машине Windows (тот, который был назначен для удаленного завершения работы в точке A).

  • '-I' - это IP-адрес машины Windows, которую нужно выключить.