Завершение работы Windows-машины с терминала Linux - PullRequest
10 голосов
/ 30 марта 2012

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

Ответы [ 7 ]

15 голосов
/ 30 марта 2012

Команда на отключение системы Windows от Linux -:

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

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

12 голосов
/ 15 ноября 2014

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

Часть A) На компьютере с Windows:

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

  • запустить 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:

Itзависит от вашего дистрибутива 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-адресокна машины до выключения.

1 голос
/ 18 декабря 2018

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

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

1 голос
/ 30 марта 2012

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

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

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

1 голос
/ 30 марта 2012

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

0 голосов
/ 30 марта 2012

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

0 голосов
/ 30 марта 2012

Вариант 1: установить SSH-сервер на Windows.Войдите на этот сервер из любого ящика и вызовите команду выключения.Мы используем 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 с помощью команды выключения (я использую ее для запуска пакетного скрипта Windows, в котором есть завершение работы, но не уверен, что вы можете напрямую вызвать shutodwn)

...