Всем привет!
Ранее я писал о том, как установить и настроить утилиту 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 строку настраиваются заголовки и содержимое письма.
Осталось только добавить скрипт в планировщик заданий (подробней как добавить в планировщик описывалось здесь) и получать на электронный адрес отчеты. Надеюсь скрипт окажется полезным и сэкономит страждущим время и нервы :)
Комментариев нет:
Отправить комментарий