СЛУЖБА КОНТРОЛЯ РАБОТЫ ХОСТОВ

Бывает, что (неожиданно или спланированно) возникает необходимость непрерывно контролировать доступность каких-то путей в сети или конкретных хостов. Вручную это неудобно, трудоемко - невозможно. Конечно, существует множество программ, реализующих контроль за состоянием путей/хостов и имеющих удобный интерфейс. Однако большинство из них небесплатны и/или функционально избыточны. Столкнувшись лично с такой проблемой, я решил написать простейшую службу, которая бы упростила администрирование моей сети.

HostsWatcher (ZIP, 19127 байт)

Скачанные файлы службы и информационные скрипты копируются, например, в C:\NetManagement\Scripts\HostWatch, после чего служба инсталлируется в систему командой

HostsWatch.exe -install

Параметры службы находятся в HKLM\System\CCS\Services\HostsWatch\Parameters

Параметры службы

Hosts (REG_MULTI_SZ) - список хостов. Во избежание ошибок заполняйте хосты именами или IP в regedt32.exe.

TTL (REG_DWORD) - перевод не требуется, это TTL

TimeOut (REG_DWORD) - таймаут для ICMP_ECHO_REQUEST (все временнЫе параметры - в мсек)

MaxTries (REG_DWORD) - количество попыток, после которых служба считает, что хост недоступен

LinkDown - скрипт, запускаемый в случае появления любого недоступного хоста, в качестве параметра передается имя этого хоста.

LinkUp аналогично LinkDown, только для появившего соединения с ранее недоступным хостом.

PollingInterval - промежуток времени между проверками всего списка Hosts.

В качестве скриптов можно использовать следующие (vbs):

------------linkdown.vbs------------
Set objArgs = WScript.Arguments
WScript.Echo "Link to " + objArgs(0) + " is down"
------------linkdown.vbs------------

-------------linkup.vbs-------------
Set objArgs = WScript.Arguments
WScript.Echo "Link to " + objArgs(0) + " is up"
-------------linkup.vbs-------------

Запуск скриптов

x:\winnt\system32\wscript.exe x:\NetManagement\Scripts\HostWatch\linkup.vbs для LinkUp

x:\winnt\system32\wscript.exe x:\NetManagement\Scripts\HostWatch\linkdown.vbs для LinkDown

где "х" - системный диск.

В принципе, из этих скриптов можно и музыку играть, и адрес выводить, надо только разрешить сервису взаимодействовать с десктопом в ServiceManager`е.

Priority (REG_DWORD):
Принимаемые значения - стандартные классы приоритетов Win32:
0 - BELOW_NORMAL
1 - ABOVE_NORMAL
2 - IDLE
3 - NORMAL
4 - HIGH
5 - REALTIME
Первые два (0, 1) - только для w2k и старше, проверка делается в самом сервисе, и если значение приоритета неверное - сбрасывается в IDLE (по умолчанию) c предупреждением в Application Log.

Об ошибках в работе пишется в Application Log

Служба удаляется из системы командой:
HostsWatch.exe -remove

Работа службы проверена в OS
WinNT4.0 (SP6+) и Win2000 (SP2+)


© Игорь Артемьев, 2002
по материалам news-группы
relcom.comp.os.windows.nt
04.11.2002
   Rambler's Top100