Главная > WSH скрипты > ping2log - запись в лог доступности сервера

ping2log - запись в лог доступности сервера


24 августа 2011. Разместил: dimon
Скрипт для проверки доступности соединения методом ping-а, указанного в настройках сервера, и записи результатов проверки в лог-файл.

'----------------------------------------------------------------------
'
' Copyright (c)  All rights reserved.

'
' AUTHOR: tudimon.com
' DATE: 24.08.2011
' NAME: ping2log.vbs
'
' COMMENT:
'
' Проверка доступности соединения методом ping-а и запись результатов
' проверки в лог-файл
'
' Завершить выполнение скрипта можно прибив в Диспетчере задач процесс
' wscript.exe
'
'----------------------------------------------------------------------

compip = "77.88.21.13"      ' ip адрес сервера, который будем пинговать
LogFilePath = "c:\log.log"    ' лог-файл
timeout = "30"                 ' таймаут проверки в секундах

On Error Resume Next


do

    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 & " доступен"
            LogFile.Close

            'MsgBox compip & " пингуется :) "
        Else
            ' не доступен
        
            ' пишем лог
            Set FSO = CreateObject("Scripting.FileSystemObject")
            Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
            LogFile.WriteLine Now & " " & compip & " не доступен"
            LogFile.Close
        
            'MsgBox compip & " не пингуется. Попробуйте позвонить позднее :) "
        End If
    
' заснем на указанное кол-во секунд
wscript.sleep timeout*1000

loop


Завершить выполнение скрипта можно прибив в Диспетчере задач процесс wscript.exe

ping2log.rar [1,91 Kb] (cкачиваний: 288)





*** v2 ***


Моргающее черное окошко cmd очень неудобно. Поэтому избавимся от него, воспользовавшись Win32_PingStatus class.

Измененный скрипт будет выглядеть так:

'----------------------------------------------------------------------
'
' Copyright (c)  All rights reserved.
'
'
' AUTHOR: tudimon.com
' DATE: 04.10.2011
' NAME: ping2log_v2.vbs
'
' COMMENT:
'
' Проверка доступности соединения методом ping-а и запись результатов
' проверки в лог-файл
'
' Завершить выполнение скрипта можно прибив в Диспетчере задач процесс
' wscript.exe
'
'----------------------------------------------------------------------

compip = "77.88.21.13"      ' ip адрес сервера, который будем пинговать
LogFilePath = "c:\log.log"    ' лог-файл
timeout = "30"                 ' таймаут проверки в секундах

On Error Resume Next

do
    
        If fnPing(compip) = 1 Then
            ' доступен

            ' пишем лог
            Set FSO = CreateObject("Scripting.FileSystemObject")
            Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
            LogFile.WriteLine Now & " " & compip & " доступен"
            LogFile.Close

            'MsgBox compip & " пингуется :) "
        Else
            ' не доступен
        
            ' пишем лог
            Set FSO = CreateObject("Scripting.FileSystemObject")
            Set LogFile = FSO.OpenTextFile(LogFilePath, 8, True)
            LogFile.WriteLine Now & " " & compip & " не доступен"
            LogFile.Close
        
            'MsgBox compip & " не пингуется. Попробуйте позвонить позднее :) "
        End If
    
' заснем на указанное кол-во секунд
wscript.sleep timeout*1000

loop




'-------------------------------------------------------------------------------
Function fnPing( strHost )
' fnPing = 0  - не пингуется
' fnPing = 1  - пингуется
Dim objPing, objRetStatus
Set objPing = GetObject( "winmgmts:{impersonationLevel=impersonate}" ).ExecQuery( "select * from Win32_PingStatus where address = '" & strHost & "'" )
        'http://msdn.microsoft.com/en-us/library/aa394350(VS.85).aspx

For Each objRetStatus in objPing
   If IsNull( objRetStatus.StatusCode ) or objRetStatus.StatusCode <> 0 Then
        fnPing = 0
   Else
        fnPing = 1
        'ResponseTime - Time elapsed to handle the request.
        'fnPing = objRetStatus.ResponseTime
   End If
Next
End Function
'-------------------------------------------------------------------------------


Источник - admnotes.blogspot.com

Завершение скрипта так же как и первого - через Диспетчер задач.

ping2log_v2.rar [2,11 Kb] (cкачиваний: 129)





*** v3 ***


Эта версия отличается от предыдущей тем, что записывает в лог время отклика сервера.

ping2log_v3.rar [2,18 Kb] (cкачиваний: 158)





*** v4 ***


+ ежедневные лог-файлы в формате yyyy-mm-dd.log

ping2log_v4.rar [2,34 Kb] (cкачиваний: 475)

Вернуться назад