Всем привет!
Ранее я писал о том, как установить и настроить утилиту BGInfo. Очень удобно, когда все, что необходимо, находится перед глазами. Но что делать, если Вы не дома, а полезная информация на Вашем мониторе?! Например, публичный IP-адрес, свободное место на диске, да мало ли что еще может пригодиться. Подобная необходимость возникает чаще, если у Вас в домашней сети имеется веб-сервер, или какой либо другое приложение к которому нужно обеспечить доступ извне. Вам повезет, если Ваш маршрутизатор (роутер) поддерживает ежедневные отчеты, но если нет, то дальше будет показано как настроить отчеты по событию на GMail или другую почту.
FUNCTION getPublicIP()
DIM strURL, strResponse
strURL = "http://myip.dnsomatic.com"
DIM oXMLHTTP: SET oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
call oXMLHTTP.open("GET", strURL, false)
on error resume next
call oXMLHTTP.send()
on error goto 0
strResponse = oXMLHTTP.ResponseText
SET oXMLHTTP = nothing
DIM oRegExp: SET oRegExp = new RegExp
oRegExp.Pattern = "((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})"
oRegExp.Global = True
IF oRegExp.test(strResponse) THEN strResponse = oRegExp.execute(strResponse)(0)
SET oRegExp = nothing
getPublicIP = strResponse
END FUNCTION
Эта функция выполняет запрос по адресу http://myip.dnsomatic.com и с помощью регулярного выражения извлекает IP-адрес из ответа сервера. Вы можете сами пройти по вышеуказанному адресу и убедиться, что ответ не содержит ничего другого.
Теперь посмотрим на наш готовый скрипт отправляющий электронное письмо на GMail:
' Send E-Mail to GMail
FUNCTION getPublicIP()
DIM strURL, strResponse
strURL = "http://myip.dnsomatic.com"
DIM oXMLHTTP: SET oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
call oXMLHTTP.open("GET", strURL, false)
on error resume next
call oXMLHTTP.send()
on error goto 0
strResponse = oXMLHTTP.ResponseText
SET oXMLHTTP = nothing
DIM oRegExp: SET oRegExp = new RegExp
oRegExp.Pattern = "((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})"
oRegExp.Global = True
IF oRegExp.test(strResponse) THEN strResponse = oRegExp.execute(strResponse)(0)
SET oRegExp = nothing
getPublicIP = strResponse
END FUNCTION
Sub SendIPInfo()
On Error Resume Next
Dim iMsg, iConf, Flds, ServerName, ip, br
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Set br = "< br/ >"
ip = getPublicIP()
schema = "http://schemas.microsoft.com/cdo/configuration/"
Flds.Item(schema & "sendusing") = 2
Flds.Item(schema & "smtpserver") = "smtp.gmail.com"
Flds.Item(schema & "smtpserverport") = 465
Flds.Item(schema & "smtpauthenticate") = 1
Flds.Item(schema & "sendusername") = "email@gmail.com"
Flds.Item(schema & "sendpassword") = "password"
Flds.Item(schema & "smtpusessl") = 1
Flds.Update
' message body
strDate = CStr(Date()) & " " & CStr(Time())
strBody = br & "IP info for HomeServer at " & strDate & br & br
strBody = strBody & "IP: " & ip
With iMsg
.To = "Receiver Name <receiver.email@gmail.com>"
.From = "Sender Name <sender.email@gmail.com>"
.Subject = "Subject title " & strDate
.HTMLBody = strBody
.Sender = "Sender name"
.Organization = "Example Inc."
.ReplyTo = "replyTo.email@gmail.com"
Set .Configuration = iConf
.Send
End With
Set iMsg = nothing
Set iConf = nothing
Set Flds = nothing
End Sub
SendIPInfo
Как видно из примера, тело сообщения формируется в переменной strBody, а функция getPublicIP() передает IP-адрес в переменную ip. Вы можете добавлять необходимые значения строку за строкой в переменную strBody, формируя тем самым тот отчет, который Вам необходим. Не забывайте про конкатенацию (объединение) строк с помощью амперсантов (&) и перевода строки переменной br. Обратите внимание, что в декларации переменной br между скобками имеются лишние пробелы, в Вашем скрипте их быть не должно и в листинге написано так из-за того, что SyntaxHighlighter вместо тега отображает перевод строки.
Настройки необходимые для соединения с smtp-сервером находятся с 39 по 45 строку. С 54 по 60 строку настраиваются заголовки и содержимое письма.
Осталось только добавить скрипт в планировщик заданий (подробней как добавить в планировщик описывалось здесь) и получать на электронный адрес отчеты. Надеюсь скрипт окажется полезным и сэкономит страждущим время и нервы :)

Комментариев нет:
Отправить комментарий