Завершение работы Windows-машины с терминала linux

Я запускаю приложение на Linux-машине. Предоставляя ip-адрес машины Windows как входной, приложение должно завершить работу Windows-машины. Если машины работают с одной и той же ОС, это очень просто, но я смущен, как это сделать в перекрестной ОС.

Ответ 1

Команда для выключения системы windows из linux -:

$ net rpc -S <ip address> -U <username>%<password> shutdown -t 1 -f

Эта команда может быть выпущена из bash или даже задана в задании cron для выключения компьютера в определенное время, и по умолчанию эта команда поставляется со многими дистрибутивами.

Ответ 2

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

Часть A) На машине Windows:

1) Добавьте политику безопасности удаленного завершения:

  • run secpol.msc

  • в дереве программ, откройте Security Settings > Local Policies > User rights Assignment

  • Найти запись Force shutdown from a remote system

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

2) Добавьте ключи реестра, чтобы отключить удаленные ограничения UAC:

  • Запустите regedit.exe в качестве администратора

  • Найти HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System

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

3) Запустите службу удаленного реестра:

  • Откройте cmd.exe в качестве администратора

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

    sc config RemoteRegistry start= auto

    sc start RemoteRegistry

Часть B) На машине Linux:

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

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

apt-get install samba-common

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

net rpc shutdown -f -t 0 -C 'message' -U userName%password -I xxx.yyy.zzz.ttt

Где:

  • -f означает принудительное завершение работы всех приложений (может быть обязательно)

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

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

  • -I - это IP-адрес компьютера Windows для завершения работы.

Ответ 3

Это зависит от вашей инфраструктуры - как вы выполняете аутентификацию на машинах Windows, можете ли вы их самостоятельно настроить и т.д. Если бы это был я, я бы поставил Cygwin в окнах Windows, затем ssh к ним и запустите shutdown -h. Конечно, есть и другие способы сделать это.

Ответ 4

Вам нужен способ запуска оболочки в окне Windows, чтобы вы могли запустить команду shutdown, встроенную в Windows.

Вы можете установить Cygwin для этого, а затем установить демон SSH в Windows. После этого ваш Linux-сервер может запускать команды в окне Windows так же, как если бы это была другая машина Linux.

Вот несколько инструкций по настройке Cygwin sshd в Windows.

Ответ 5

Вариант 1: Установите SSH-сервер на окна. Войдите на этот сервер из любого окна и выйдите из системы. Мы используем Interix (среда UNIX, подобранная Microsoft). Он поставляется с сервером telnet - позволяет вызывать команды Windows с других компьютеров.

Другой вариант: Если вы установили samba в windows, он может подключиться к окнам и вызвать команды windows

 net rpc SHUTDOWN ...

(из http://www.linuxforums.org/forum/red-hat-fedora-linux/60324-remote-shutdown-windows-linux-box.html#post573872)

Другой вариант: попробуйте rdesktop для Windows-машины с командой shutdown (я использую его для запуска пакета windows script, который отключился в нем, не уверен, что вы можете напрямую вызвать shutodwn)

Ответ 6

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

Для пользователей Windows 10 (и ниже, возможно, не проверял) необходимо перейти в настройки брандмауэра и включить "Удаленное управление службами", чтобы окно linux могло подключаться через rpc.

Ответ 7

Используйте telnet в Linux, убедитесь, что telnet is enabled in Windows system