SharkX58
15-04-2015, 07:32
Подскажите, настроил скрипт ping.vbs для проверки в локальной сети доступности сервера и отправке на почту уведомления, если недоступен. Хочу теперь его использовать еще для мониторинга работы интернета, но не знаю как решить вопрос. Если нет интернета, соответственно он не сможет мне отправить письмо. Как реализовать, цикл, что если есть интернет, скрипт завершается, если нету, то он делает проверку каждые 10 сек например и как только интернет появляется, сразу отправляет на почту уведомление о сбое?
А еще, при проверке досовское окно открывается, можно его сделать скрытым?
[code]
compip = "ya.ru" ' ip адрес сервера, который будем пинговать
LogFilePath = "c:\ping.txt" ' лог-файл
timeout = "30" ' таймаут проверки в секундах
On Error Resume Next
Set objShell = CreateObject("WScript.Shell")
' Пингом проверим что сервер доступен
Set objScriptExec = objShell.Exec("%comspec% /c ping.exe -n 2 " & compip)
strPingResults = LCase(objScriptExec.StdOut.ReadAll)
If InStr(strPingResults, "ttl=") Then
' доступен
' пишем лог
Set FSO = CreateObject("Scripting.FileSystemObject")
Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
LogFile.WriteLine Now & " " & compip & " dostypen"
LogFile.Close
'MsgBox compip & " пингуется "
Else
' не доступен
sendmilo()
' пишем лог
Set FSO = CreateObject("Scripting.FileSystemObject")
Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
LogFile.WriteLine Now & " " & compip & " net dostypa"
LogFile.Close
sub sendmilo()
v_Conf = "http://schemas.microsoft.com/cdo/configuration/"
Set o_Mess = CreateObject("CDO.Message")
With o_Mess
.To = "" 'куда отправляем
.From = "Имя отправителя <email>" 'имя отправителя + Email
.Subject = "" 'Тема письма
.TextBody = "" 'Сообщение
.AddAttachment "C:\ping.txt" 'Прикрепить файл
.TextBodyPart.Charset = "windows-1251" 'русская кодировка
With .Configuration.Fields
.Item(v_Conf & "sendusing") = 2 'без использования каталога Server Exchange
.Item(v_Conf & "smtpserver") = "" 'Адрес SMTP-сервера
.Item(v_Conf & "smtpauthenticate") = 1 'Тип авторизации
.Item(v_Conf & "sendusername") = "" 'здесь имя пользователя без @
.Item(v_Conf & "sendpassword") = "" 'пароль
.Item(v_Conf & "smtpserverport") = 465 'порт (альтернативный - 465)
.Item(v_Conf & "smtpusessl") = True 'использовать ли шифрованое подключение SSL
.Item(v_Conf & "smtpconnectiontimeout") = 60 'Время до завершения повторных попыток подключения
.Update
End With
.send
End With
Set o_Mess = Nothing
End Sub
' MsgBox compip & " не пингуется. "
End If
'/////////////////////////////Функция отправки почты
[code]
А еще, при проверке досовское окно открывается, можно его сделать скрытым?
[code]
compip = "ya.ru" ' ip адрес сервера, который будем пинговать
LogFilePath = "c:\ping.txt" ' лог-файл
timeout = "30" ' таймаут проверки в секундах
On Error Resume Next
Set objShell = CreateObject("WScript.Shell")
' Пингом проверим что сервер доступен
Set objScriptExec = objShell.Exec("%comspec% /c ping.exe -n 2 " & compip)
strPingResults = LCase(objScriptExec.StdOut.ReadAll)
If InStr(strPingResults, "ttl=") Then
' доступен
' пишем лог
Set FSO = CreateObject("Scripting.FileSystemObject")
Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
LogFile.WriteLine Now & " " & compip & " dostypen"
LogFile.Close
'MsgBox compip & " пингуется "
Else
' не доступен
sendmilo()
' пишем лог
Set FSO = CreateObject("Scripting.FileSystemObject")
Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
LogFile.WriteLine Now & " " & compip & " net dostypa"
LogFile.Close
sub sendmilo()
v_Conf = "http://schemas.microsoft.com/cdo/configuration/"
Set o_Mess = CreateObject("CDO.Message")
With o_Mess
.To = "" 'куда отправляем
.From = "Имя отправителя <email>" 'имя отправителя + Email
.Subject = "" 'Тема письма
.TextBody = "" 'Сообщение
.AddAttachment "C:\ping.txt" 'Прикрепить файл
.TextBodyPart.Charset = "windows-1251" 'русская кодировка
With .Configuration.Fields
.Item(v_Conf & "sendusing") = 2 'без использования каталога Server Exchange
.Item(v_Conf & "smtpserver") = "" 'Адрес SMTP-сервера
.Item(v_Conf & "smtpauthenticate") = 1 'Тип авторизации
.Item(v_Conf & "sendusername") = "" 'здесь имя пользователя без @
.Item(v_Conf & "sendpassword") = "" 'пароль
.Item(v_Conf & "smtpserverport") = 465 'порт (альтернативный - 465)
.Item(v_Conf & "smtpusessl") = True 'использовать ли шифрованое подключение SSL
.Item(v_Conf & "smtpconnectiontimeout") = 60 'Время до завершения повторных попыток подключения
.Update
End With
.send
End With
Set o_Mess = Nothing
End Sub
' MsgBox compip & " не пингуется. "
End If
'/////////////////////////////Функция отправки почты
[code]