ПОДРАЗДЕЛЫ


   Список статей
   АРМ с ПК PCAA
   IPAMon + HTTP
   IPAMon + SMTP
   IPAMon + EMail
   Multiple IPAMon
   Файлы из сети
   Перенос файлов
   Эмуляция флешек
   Контроль флешек
   Скорость кадров
   Скины SPRuler
   Смайлы ICQ 6/7
   Смайлы QIP
   Смайлы Disqus
   Смайлы Narod.Ru
   Смайлы на сайте

   

«Сообщение на E-Mail о недоступности хоста...»


( автоматическая отправка сообщений на E-Mail о недоступности сетевого ресурса )



ПРИМЕР МОНИТОРИНГА СЕТЕВОГО РЕСУРСА С ОТПРАВКОЙ СООБЩЕНИЙ НА E-MAIL:
( Отправка сообщений на электронную почту при длительном отсутствии доступа к хосту (сетевому ресурсу). С использованием в ОС Microsoft Windows программы IPAMon, отправляющей периодические тестовые запросы (PING) хосту по ICMPv4-протоколу )


ЗАДАЧА: Отправлять текстовое сообщение на адрес электронной почты при длительном отсутствии доступа к хосту (сетевому ресурсу, серверу, компьютеру и т.д.).

ОПИСАНИЕ: Для наглядности, в данном примере интервал отправки сообщений на электронную почту, в случае обнаружения недоступности хоста, равен 60 сек. Для более точного срабатывания "тревоги" необходимо подобрать оптимальные значения параметров: "количество ошибок для запуска файла" и "период запросов".


Устанавливаем на компьютер программу IPAMon и запускаем её:


Общие настройки программы:

IPAMon-00


Вариант решения № 1 (через VBS-скрипт):

Указываем какой файл запускать:

IPAMon-01

Создаём в папке с программой файл: "email2.vbs" (пример можно взять из архива: email_vbs.zip)

  Код скрипта email2.vbs:

Option Explicit
On 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"
' WSHShell.Run "telnet.exe 192.168.0.1 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


Если на почтовом сервере не требуется авторизация (по SMTP-протоколу), то содержимое файла будет как в файле "email1.vbs" из вышеуказанного архива.

  Код скрипта email1.vbs:

Option Explicit
On 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"
' WSHShell.Run "telnet.exe 192.168.0.1 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



Вариант решения № 2 (через BAT/CMD-файл):

Указываем какой файл запускать:

IPAMon-02

Создаём в папке с программой файл: "email2.bat" (пример можно взять из архива: email_bat.zip)

  Код сценария 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-протоколу), то содержимое файла будет как в файле "email1.bat" из вышеуказанного архива.

  Код сценария email1.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 -u "TOP SECRET" -m "!msg!"
)



В обоих вариантах берём утилиту "sendEmail.exe" из архива sendEmail.zip и кладём её в папку с программой. Данная утилита предназначена для отправки электронной почты из командной строки.
После того, как будут созданы, скопированы, сконфигурированы все необходимые файлы (не забываем везде менять "server.xx" и другие адреса, имена, логины, пароли на свои) - изменяем в программе IP-адрес контролируемого хоста и мониторим его доступность.



ПОЯСНЕНИЕ: Вместо доменного имени почтового сервера, например "smtp.server.xx", можно указывать его IP-адрес, например "192.168.0.1", если он "белый" либо находится внутри локальной сети. Вместо SMTP-порта "25" можно указать тот порт, через который осуществляется отправка почты на сервере, например "465".



     
    © Dmitry Saltykov (ZXDemon)  [ Creative Commons License «BY-NC-SA» ]