Пример перезагрузки сервера командой shutdown при получении SMS устройством NetPing

Иногда возникает необходимость перезагрузить сервер удалённо. Это возможно сделать с помощью специального SMS-сообщения и команды shutdown. Перезагрузка при помощи SMS-сообщения позволяет перезагрузить сервер даже при отсутствии подключения к локальной сети или сети Internet. Устройство NetPing будет получать SMS-сообщения и инициализировать процесс перезагрузки сервера, а также уведомлять SMS-сообщением о начале и о завершении перезагрузки.

Для реализации данной функции необходимо наличие следующего оборудования и программного обеспечения:

  • Компьютер под управлением ОС Windows 7 или Windows 8. Возможно использование серверных вариантов операционных систем семейства Windows – Windows Server 2003, Windows Server 2008, Windows Server 2012;
  • Брандмауэр операционной системы (или антивирусных средств, если такие используются) настроен на прохождение ICMP пакетов;
  • Установленный компонент Windows – PowerShell;
  • Одно из устройств — NetPing 8/PWR-220 v3/SMSNetPing 4/PWR-220 v3/SMSNetPing 2/PWR-220 v2/SMSNetPing 2/PWR-220 v1/SMS.

В примере будем использовать следующие установки:

  • IP адрес устройства NetPing – 192.168.0.100;
  • Имя пользователя – visor;
  • Пароль пользователя – ping;
  • Community записи устройства NetPing – ping1;
  • IP адрес сервера – 192.168.0.254;
  • Путь к утилите shutdown.exe – c:\windows\system32\shutdown.exe;
  • Под данную функцию будем использовать первую IO линию.

Логика работы

При необходимости перезагрузки компьютера/сервера на устройство NetPing отправляется SMS-сообщение с командой, по которой устройство переводит одну из линий ввода/вывода в состояние логической «1». Для компьютера/сервера это признак необходимости произвести перезагрузку.
На компьютере по определенному расписанию производится запуск сценария PowerShell, который проверяет состояние линии ввода/вывода на устройстве NetPing. При логической «1» происходит перезагрузка компьютера.

Предварительная настройка устройства NetPing

Для управления устройством посредством SMS-сообщений необходимо присвоить «Community записи» в «Настройках доступа». Данная настройка производится в разделе «НАСТРОЙКА» web-интерфейса устройства NetPing;

NetPing

Настроить номер мобильного телефона, на который устройство NetPing будет отправлять информационные SMS-сообщения. Данный параметр настраивается в разделе «SMS» web-интерфейса. Номер телефона вводится в международном формате.

NetPing

Указать IP адрес компьютера, для работы «пингера». Это позволит получать информационное SMS-сообщение о начале процесса перезагрузки и его завершении. Также в настройках «СОБЫТИЯ ДЛЯ ОТПРАВКИ SMS-УВЕДОМЛЕНИЙ» необходимо отметить пункт «Пропадание/восстановление связи с указанным IP (пингер)». Эти две настройки производятся через раздел web-интерфейса «SMS».

NetPing





NetPing

Последняя настройка – необходимо перевести режим работы линии ввода/вывода в состояние «выход». Данная настройка производится в разделе «ВВОД-ВЫВОД» web-интерфейса. Здесь можно произвести настройку любой одной линии, которая не задействована под другие функции.

NetPing

Используемый сценарий PowerShell

Сценарий, который производит опрос состояния линии ввода/вывода и производит перезагрузку компьютера при включенном устройстве, выглядит следующим образом:

$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential(‘visor’,’ping’)
$webpage = $webclient.DownloadString(‘http://192.168.0.100/io.cgi?io1’)
If($webpage | Select-String «‘ok’, -1, 1» –Quiet){

    $webpage = $webclient.DownloadString(‘http://192.168.0.100/io.cgi?io1=0’)
    Start-Process –FilePath «c:\windows\system32\shutdown.exe» –ArgumentList ‘/r /t 0 /f’

}

Вторая строка сценария определяет имя пользователя и его пароль, необходимые для доступа к устройству NetPing.
Третья строка содержит запрос состояния линии ввода/вывода.
Пятая строка необходима для сброса линии ввода/вывода в состояние логического «0». В противном случае, компьютер будет перезагружаться в непрерывном цикле.

Поскольку в планировщике заданий операционной системы Windows выполнить непосредственно сценарий PowerShell не удастся, необходимо подготовить пакетный файл.
Для этого сценарий PowerShell сохраняется в отдельном файле. Например, c:\restart.ps1

Создается файл c:\restart.vbs, со следующим содержанием:

Set objShell = CreateObject(«Wscript.Shell») 
objShell.Run(«powershell.exe -noninteractive -noprofile c:\ restart.ps1»), 0, false 

В конце второй строки: 0 — запускаться в скрытом режиме, false — не ждать окончания работы сценария PowerShell.

В планировщике Windows создаем новое задание, в котором в качестве исполняемого файла выбирается пакетный файл c:\restart.vbs и настраивается периодичность его выполнения.

По умолчанию выполнение сценариев PowerShell в системе запрещено. Так как в скриптах может находится вредоносный код, который может нанести вред системе. Для тестирования скриптов можно отключить проверку выполнения для локальный скриптов. Для этого запускаем консоль PowerShell от имени администратора и вводим команду:

Set-ExecutionPolicy RemoteSigned

Подробнее здесь: http://did5.ru/it/windows/powershell/powershell-vypolnenie-skriptov-zapreshheno-dlya-dannoj-sistemy.html

Команды, используемые в SMS-сообщениях

Для инициализации процесса перезагрузки компьютера/сервера на телефонный номер устройства NetPing необходимо отправить команду:

NETPING L1+ ping1

Если отправленная команда успешно выполнена, приходит SMS-сообщение следующего содержания:

NP DONE L1+

Поскольку после начала процесса перезагрузки компьютера ICMP пакеты не будут достигать своей цели, сработает пингер и отправит SMS-сообщение следующего содержания:

PINGER STATUS: FAILED

После загрузки компьютер вновь начинает отвечать на ICMP запросы, и пингер отправит следующее сообщение:

PINGER STATUS: OK

Процесс перезагрузки компьютера завершён.

Подробную информацию об использовании SMS-команд можно найти в документе «Описание встроенного ПО для вашего устройства».