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