Пример использования программы IPAMon - ОТПРАВКА СООБЩЕНИЯ НА E-Mail ПО ТРЕВОГЕ:
Задача: Отправлять текстовое сообщение на адрес электронной почты при длительном отсутствии доступа к хосту (сетевому ресурсу, серверу, компьютеру и т.д.).
Описание: Для наглядности, в данном примере интервал отправки сообщений на электронную почту, в случае обнаружения недоступности хоста, равен 60 сек. Для более точного срабатывания "тревоги" необходимо подобрать оптимальные значения параметров: "количество ошибок для запуска файла" и "период запросов".
Устанавливаем на компьютер программу 
IPAMon и 
запускаем её:
 Общие настройки программы:
 Вариант решения № 1 (через VBS-скрипт)
Вариант решения № 1 (через VBS-скрипт):
Указываем какой файл запускать:
 Создаём файл "email2.vbs" (в папке с программой) со следующим содержимым
Создаём файл "email2.vbs" (в папке с программой) со следующим содержимым:
| Option ExplicitOn Error Resume Next
 Dim WSHShell, objArgs, iCnt, strIP
 iCnt = 0
 strIP = ""
 Err.Clear
 Set objArgs = WScript.Arguments
 If Err.Number = 0 Then
 For iCnt = 0 to objArgs.Count - 1
 If Len(Trim(objArgs(iCnt))) > 0 Then
 strIP = Trim(objArgs(iCnt))
 Exit For
 End If
 Next
 Err.Clear
 If Len(strIP) > 0 Then
 Set WSHShell = WScript.CreateObject("WScript.Shell")
 If Err.Number = 0 Then
 
 ' ПОЧТОВЫЙ СЕРВЕР (25 порт - SMTP):
 WSHShell.Run "telnet.exe smtp.server.xx 25"
 
 ' ЗАДЕРЖКА ПОДКЛЮЧЕНИЯ к почтовому серверу (в миллисекундах):
 WScript.Sleep 5000
 
 If Err.Number = 0 Then
 WSHShell.SendKeys "helo alarm" & chr(13)
 WScript.Sleep 1000
 
 WSHShell.SendKeys "auth login" & chr(13)
 WScript.Sleep 1000
 
 ' ЛОГИН:
 WSHShell.SendKeys Base64Encode("login") & chr(13)
 WScript.Sleep 1000
 
 ' ПАРОЛЬ:
 WSHShell.SendKeys Base64Encode("password") & chr(13)
 WScript.Sleep 1000
 
 ' E-Mail ОТПРАВИТЕЛЯ
 WSHShell.SendKeys "mail from:<agentsmith@server.xx>" & chr(13)
 WScript.Sleep 1000
 
 ' E-Mail ПОЛУЧАТЕЛЯ:
 WSHShell.SendKeys "rcpt to:<jonsmith@server.xx>" & chr(13)
 WScript.Sleep 1000
 
 WSHShell.SendKeys "data" & chr(13)
 WScript.Sleep 1000
 
 ' ТЕМА СООБЩЕНИЯ:
 WSHShell.SendKeys "subject:TOP SECRET" & chr(13)
 WScript.Sleep 1000
 
 ' ИМЯ ОТПРАВИТЕЛЯ:
 WSHShell.SendKeys "from:Agent Smith" & chr(13)
 WScript.Sleep 1000
 
 ' ИМЯ ПОЛУЧАТЕЛЯ:
 WSHShell.SendKeys "to:Jon Smith" & chr(13)
 WScript.Sleep 1000
 
 ' ТЕКСТ СООБЩЕНИЯ:
 WSHShell.SendKeys "Hello Jon!" & chr(13)
 WSHShell.SendKeys "IP-address: " & strIP & " it isn't available!" & chr(13)
 WScript.Sleep 1000
 
 WSHShell.SendKeys "." & chr(13)
 WScript.Sleep 1000
 WSHShell.SendKeys "quit" & chr(13)
 WScript.Sleep 1000
 End If
 End If
 Set WSHShell = Nothing
 End If
 End If
 Set objArgs = Nothing
 Err.Clear
 WScript.Quit 0
 
 Function Base64Encode(inData)
 On Error Resume Next
 Base64Encode = ""
 Const Base64 = _
 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 Dim cOut, sOut, nCnt
 For nCnt = 1 To Len(inData) Step 3
 Dim nGroup, pOut, sGroup
 nGroup = _
 &H10000 * Asc(Mid(inData, nCnt, 1)) + _
 &H100 * MyASC(Mid(inData, nCnt + 1, 1)) + _
 MyASC(Mid(inData, nCnt + 2, 1))
 nGroup = Oct(nGroup)
 nGroup = String(8 - Len(nGroup), "0") & nGroup
 pOut = _
 Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) + _
 Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) + _
 Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) + _
 Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)
 sOut = sOut + pOut
 Next
 Select Case Len(inData) Mod 3
 Case 1:
 sOut = Left(sOut, Len(sOut) - 2) + "=="
 Case 2:
 sOut = Left(sOut, Len(sOut) - 1) + "="
 End Select
 Base64Encode = sOut
 End Function
 
 Function MyASC(OneChar)
 On Error Resume Next
 MyASC = 0
 If OneChar <> "" Then MyASC = Asc(OneChar)
 End Function
 | 
:
| Option ExplicitOn Error Resume Next
 Dim WSHShell, objArgs, iCnt, strIP
 iCnt = 0
 strIP = ""
 Err.Clear
 Set objArgs = WScript.Arguments
 If Err.Number = 0 Then
 For iCnt = 0 to objArgs.Count - 1
 If Len(Trim(objArgs(iCnt))) > 0 Then
 strIP = Trim(objArgs(iCnt))
 Exit For
 End If
 Next
 Err.Clear
 If Len(strIP) > 0 Then
 Set WSHShell = WScript.CreateObject("WScript.Shell")
 If Err.Number = 0 Then
 
 ' ПОЧТОВЫЙ СЕРВЕР (25 порт - SMTP):
 WSHShell.Run "telnet.exe smtp.server.xx 25"
 
 ' ЗАДЕРЖКА ПОДКЛЮЧЕНИЯ к почтовому серверу (в миллисекундах):
 WScript.Sleep 5000
 
 If Err.Number = 0 Then
 WSHShell.SendKeys "helo alarm" & chr(13)
 WScript.Sleep 1000
 
 ' E-Mail ОТПРАВИТЕЛЯ
 WSHShell.SendKeys "mail from:<agentsmith@server.xx>" & chr(13)
 WScript.Sleep 1000
 
 ' E-Mail ПОЛУЧАТЕЛЯ:
 WSHShell.SendKeys "rcpt to:<jonsmith@server.xx>" & chr(13)
 WScript.Sleep 1000
 
 WSHShell.SendKeys "data" & chr(13)
 WScript.Sleep 1000
 
 ' ТЕМА СООБЩЕНИЯ:
 WSHShell.SendKeys "subject:TOP SECRET" & chr(13)
 WScript.Sleep 1000
 
 ' ИМЯ ОТПРАВИТЕЛЯ:
 WSHShell.SendKeys "from:Agent Smith" & chr(13)
 WScript.Sleep 1000
 
 ' ИМЯ ПОЛУЧАТЕЛЯ:
 WSHShell.SendKeys "to:Jon Smith" & chr(13)
 WScript.Sleep 1000
 
 ' ТЕКСТ СООБЩЕНИЯ:
 WSHShell.SendKeys "Hello Jon!" & chr(13)
 WSHShell.SendKeys "IP-address: " & strIP & " it isn't available!" & chr(13)
 WScript.Sleep 1000
 
 WSHShell.SendKeys "." & chr(13)
 WScript.Sleep 1000
 WSHShell.SendKeys "quit" & chr(13)
 WScript.Sleep 1000
 End If
 End If
 Set WSHShell = Nothing
 End If
 End If
 Set objArgs = Nothing
 Err.Clear
 WScript.Quit 0
 | 
:
Указываем какой файл запускать:
 Создаём файл "email2.bat" (в папке с программой) со следующим содержимым
Создаём файл "email2.bat" (в папке с программой) со следующим содержимым:
- Код: Выделить всё
- @echo off
 setlocal ENABLEDELAYEDEXPANSION
 if "%1" NEQ "" (
 set "msg=Hello Jon^! IP-address: %1 it isn't available^!"
 sendEmail.exe -f agentsmith@server.xx -t jonsmith@server.xx -s smtp.server.xx:25 -xu login -xp password -u "TOP SECRET" -m "!msg!"
 )
Если на почтовом сервере не требуется авторизация (по SMTP-протоколу), то содержимое файла будет такое:- Код: Выделить всё
- @echo off
 setlocal ENABLEDELAYEDEXPANSION
 if "%1" NEQ "" (
 set "msg=Hello Jon^! IP-address: %1 it isn't available^!"
 sendEmail.exe -f agentsmith@server.xx -t jonsmith@server.xx -s smtp.server.xx:25 -u "TOP SECRET" -m "!msg!"
 )
В обоих вариантах берём утилиту "
sendEmail.exe" из архива 
sendEmail.zip и 
кладём её в папку с программой. Данная утилита предназначена для отправки электронной почты из командной строки.
После того, как будут созданы, скопированы, сконфигурированы все необходимые файлы (не забываем везде менять "
server.xx" и другие 
адреса, 
имена, 
логины, 
пароли на свои) - изменяем в программе 
IP-адрес контролируемого 
хоста и мониторим его доступность.
Пояснение: Вместо доменного имени почтового сервера, например "smtp.server.xx", можно указывать его IP-адрес, например "192.168.0.1", если он "белый" либо находится внутри локальной сети. Вместо SMTP-порта "25" можно указать тот порт, через который осуществляется отправка почты на сервере, например "465".
Готовые файлы "email2.vbs", "email1.vbs" и "email2.bat", "email1.bat" можно взять ниже:
email_bat.zip - email1.bat, email2.bat
email_vbs.zip - email1.vbs, email2.vbs