Удаленное выключение (перезапуск) и не только *nix машин из под Windows
Автор Охальников Олег
06:08:2009 г.
Статья немного не тематическая, но что делать, приходится решать и такие вопросы...
Предыстория.
Возникла задача автоматизировать поведение серверов при перебоях питания, свести так сказать участие человека к минимуму.
Что имеем: Серверная стойка с пятком разношерстных серверов, парочка на Windows, один на FreeBSD, и парочка на Linux. Запитываются они все через один APC Smart-UPS 2200 3U. UPS подключается по COM порту к серверу Windows, на котором установлено ПО позволяющее управлять питанием этого сервера и не более. Из разговоров с тех. поддержкой APC, понял следующее, чтобы управлять питанием нескольких серверов необходимо докупить модуль сетевого управления и софт к нему. Т.к. мы люди бедные, мы пошли другим путем. В программе мониторинга APC PowerChute Business Edition Basic нашелся любопытный пунктик выполнения cmd скрипта. Не буду заостряться на том, как с помощью него можно вырубить удаленные виндовые машины, хотя вот что нашлось:
@Echo Off
SetLocal EnableExtensions
Set Comps=ip№1 ip№2 ip№3
For %%I In (%Comps Do (
Ping -n 1 -w 1 %%I >nul && Shutdown -m \%%I -s -t 10 -f
)
Теперь к самому интересному, как перезапустить *Nix систему удаленно из под Windows? Для этого нам понадобится putty. Команда будет выглядеть следующим образом:
В файле putty.txt в моём случае я прописал команду :
shutdown -P now
, но можно любую другую. Файл putty.exe закинул в system32 винды, чтобы запускать сразу без прописывания путей. Порт 22, но может быть любой другой, как изменить, смотрите серию ранее опубликованных статей по ssh на этом сайте. Чтобы выполнить команду на завершение работы ПК, нужны права root, поэтому в настройках ssh разрешаем удаленный вход root-у (по умолчанию разрешен). Ну и пароль и логин будут в открытом виде, это конечно не безопасно. Особенно если учесть что эта команда будет хранится в файле, все в открытом виде, что совсем не безопасно к сожалению.
О том, как это все оформить в виде одного красивого скрипта чуть позже, сейчас небольшое отступление. Допустим необходимо из под *Nix удаленно перезапустить Windows машину, ситуация обратная, но сложностей тут не много, делается это следующим образом:
net rpc SHUTDOWN -C "enter a comment to display at shutdown" -f -I x.x.x.x -U username%password
В локальной групповой политики группа администраторов должна иметь право на удаленное выключение компьютера.
Должна быть установлена и корректно работать Samba.
x.x.x.x это IP адрес компьютера с Windows XP, username - член группы локальных администраторов, и password это пароль пользователя, указанного в username.
P.S. К радости начальника, который может перезапускать и останавливать *Nix сервера самостоятельно ткнув на ярлык в винде, добавляется моя радость от того, что не надо торчать в офисе, а что еще хуже ехать в офис чтобы ребутнуть, остановить *Nix сервер ))))!