Сделать стартовойДобавить в закладки  
Главная страничка Главная страничка
В номере:

Выходит с 17 июля 2008 г. цена договорная

Опрос

конечно, он настанет в 2012 г.
да, но не в 2012 г.
нет, это фантастика
а что такое конец света
а мне пофиг - я буду уже мертв



Календарь
«    Август 2011    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
293031 

Архив новостей
Февраль 2021 (3)
Январь 2021 (1)
Ноябрь 2020 (2)
Июль 2020 (2)
Июнь 2020 (3)
Май 2020 (1)

Информация
ping2log - запись в лог доступности сервера
OS, мобильные OS » Windows » WSH скрипты
автор: dimon, опубликовано: 24 августа 2011

Скрипт для проверки доступности соединения методом 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качиваний: 281)





*** 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качиваний: 122)





*** v3 ***


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

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





*** v4 ***


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

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

 
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Чтобы Вам были доступны все функции Вам необходимо либо зарегистрироваться, либо зайти на сайт под своим именем.

Другие новости по теме:

  • Рекурсивный список подкатологов и файлов в текстовый лог
  • Скрипт через psexec.exe монтирует на удаленном компьютере том TrueCrypt, ко ...
  • Скрипт копирования файлов с установленным архивным битом в резервный катало ...
  • Список файлов в каталоге в текстовый файл
  • Список подкатологов в текстовый файл


  • Комментарии:

    Оставить комментарий

    #1 написал: dimon (7 октября 2011 12:17)
    mihai_md2003, грохнул случайно ваши каменты в борьбе со спамом.
    вы правы насчет записи отклика - подумаю над эти
    #2 написал: mihai_md2003 (8 октября 2011 00:05)
    Спасибо буду ждать.
    #3 написал: dimon (8 октября 2011 14:49)
    v3 - без окна cmd, в лог пишется время отклика
    #4 написал: mihai_md2003 (9 октября 2011 03:37)
    Дмитрий есть какая то ошибка в скрипте, при недоступности ресурса идет запись "доступен" и пинг пишется равным "0". Нельзя ли это исправить, и скажем, если недоступен то пинг указывать скажем 9999 или что еще лучше вообще не указывать ,(частенько когда были запоры в сети был пинг под 3000). Если мониторить сайты в принципе и так понятно, но если речь идет о мониторинге внутри локальной сети, то в ней тоже задержка часто бывает равной 0 и непонятно прошел пинг или нет. Заранее спасибо
    #5 написал: dimon (10 октября 2011 10:32)
    mihai_md2003, сорри. действительно - накосячил с переменными. теперь правильно пишет.
    #6 написал: mihai_md2003 (11 октября 2011 17:42)
    Спасибо что реагируете на мои замечания. В последней версии при запуске снова появляется окно с результатами пинга при кажом круге, но не коммандера а виндовса. У меня win xp 32 бита. Проверьте пожалуйста у себя работоспособность последний версии. Спасибо
    #7 написал: dimon (11 октября 2011 18:13)
    mihai_md2003, извини - опять накосячил - забыл убрать это диагностическое сообщение.
    надеюсь теперь все нормально будет
    спасибо тебе за тестирование feel
    #8 написал: Orbit (5 декабря 2011 20:32)
    Спасибо за скрипт. Очень полезный.
    Хотелось бы чтоб логи раскладывал по дням и работал на w7 64 bit.
    #9 написал: dimon (6 декабря 2011 09:50)
    Orbit, v4 - логи по дням
    на w7x64 работают все версии скрипта - проверял на корпоративной версии винды
    #10 написал: Orbit (6 декабря 2011 10:53)
    у меня не работает на w7x64max.
    в логах
    06.12.2011 11:43:01 77.88.21.13 доступен ( мс)
    нет мс, а так-же при вык инета пишет что апи доступен.
    И ещё нельзя ли дополнить скрипт данными которые при запуске скрипта писали в доп файл пид процесса который создаёт скрипт. Удобно было бы останавливать скрипт. Пока приходится его глушить так taskkill /IM WScript.exe /F, но если к примеру в работе несколько скриптов.
    #11 написал: dimon (6 декабря 2011 11:31)
    Orbit, странно. где не пробовал везде работало.
    попробуй закомментировать строку On Error Resume Next может ошибку выдаст
    и попробуй попинговать 127.0.0.1, плз
    pid скорее всего не получится прописать, но посмотрю попозже
    #12 написал: Orbit (6 декабря 2011 11:43)
    при комментировании данной строки ошибка.
    стр 72
    символ 1
    недостаточно памяти Get Object
    код 800A0007

    и пинг
    06.12.2011 12:37:09 127.0.0.1 доступен ( мс)
    06.12.2011 12:37:39 127.0.0.1 доступен ( мс)

    #13 написал: dimon (6 декабря 2011 12:22)
    хм, странно
    а памяти скока? (тут конечно вряд ли в ней дело, но интересно)
    NET Framework-и?

    на w2k8 R2 тоже работает
    #14 написал: Orbit (6 декабря 2011 12:37)
    4g ноут ASUS K53E
    NET Framework 4 client profile
    #15 написал: Orbit (7 декабря 2011 15:30)
    попробовал на ещё одном буке. та-же байда правда здесь w7x32.
    вроде как 7ки и не видать?!
    #16 написал: dimon (7 декабря 2011 15:45)
    буду счас ноут делать сотруднику - попробую на чистой винде запустить
    может дело в том что я на всю технику что-нить ставлю (фрэмворки например 2, 3, ява), а ты это не ставишь

    на счет того что там нет в описании семерки - ты прав, но это не значит что не будет работать. тем более у меня и на семерке и на 2008 сервере работает
    будем искать в чем отличие моей семерки от твоей
    #17 написал: dimon (9 декабря 2011 09:58)
    Orbit, UAC включен? тогда запуск от имени администратор
    проверил на новом ноуте с Windows7HP x64
    #18 написал: Orbit (9 декабря 2011 12:59)
    UAC выключен. Нашел проблему! Сomodo не давал нормально работать скрипту request
    и еще маленький вопрос по .vbs и автоматизации заполнения разных окон но не имеющего отношения к данной теме разрешите?
    #19 написал: dimon (9 декабря 2011 13:16)
    Orbit, конечно :)
    #20 написал: Orbit (9 декабря 2011 13:51)
    на примере этого скрипта
    set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "radmin.exe /connect:192.168.77.101:4899"
    WScript.Sleep 200
    WshShell.AppActivate "Система безопасности Radmin: nas"
    WScript.Sleep 500
    WshShell.SendKeys "admin"
    WshShell.SendKeys "{TAB}"
    WshShell.SendKeys "12345"
    WshShell.SendKeys "{ENTER}"
    какую команду надо использовать в скрипте перед этой командой WshShell.SendKeys "admin" чтоб запись шла именно в это поле ввода? так сказать идентификатор нужного поля.
    #21 написал: dimon (9 декабря 2011 14:03)
    хм. разве поля в приложениях имеют идентификаторы?
    я считал что не имеют. пороюсь вечерком в мануалах
    #22 написал: dimon (12 декабря 2011 09:38)
    попытал тут знакомого программиста. говорит нету идентификаторов полей.
    и он удивился зачем нужно идентифицировать - при активации формы фокус всегда попадает на одно и тоже поле - т.е. нужно просто рассчитать нужное кол-во таб-ов чтобы попасть на нужное поле
    #23 написал: Orbit (12 декабря 2011 21:07)
    бывает так что и не попадает на нужное поле, а так же иногда путает окна. не срабатывает WshShell.AppActivate.
    есть такая прога AutoIt у неё скрипты типа .vbs. Там же утилита AutoIt Window Info. Так вот она различает поля для ввода по классам. Думал что и здесь есть что то подобное.
    Кстати последний скрипт не создаёт новый файл при переходе суток.
    #24 написал: dimon (13 декабря 2011 13:28)
    Orbit, может и есть. только мы пока об этом не знаем.
    переход суток исправил
    #25 написал: dimon (12 июля 2012 09:50)
    Цитата: mihai_md2003

    Дмитрий спасибо за скрипт очень помогает. Скажите может есть возможность добавить звуковую сигнализацию в случае отсутствия пинга. Очень удобно в отслеживании редко возникающих разрывов сети. (трудно все время следить за пингами если нужно отслеживать проблему в реальном времени ) Насколько я понимаю нужно добавить еще одну команду в эту строку LogFile.WriteLine Now & " " & compip & " не доступен". Спасибо


    mihai_md2003, извини - опять грохнул камент в горячке борьбы со спамом feel
    А всплывающего сообщения недостаточно?
    Если комментировать строку
    'MsgBox compip & " не пингуется. Попробуйте позвонить позднее :) "

    то как раз такое окошко будет появляться на экране.

    Для писка через системный динамик нужно после этой строки добавить две:
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "%comspec% /c echo " & Chr(7), 0, True
    #26 написал: mihai_md2003 (12 июля 2012 15:30)
    Спасибо за дополнение. Так будет намного удобнее мониторить глюки. Теперь можно включить и заниматься своими делами, а звуковая синализация укажет если есть проблемы.
    #27 написал: xBOBeRx (29 января 2015 00:15)
    Доброго времени суток.
    Я только начал изучать VBS, хотел поделиться своей небольшой модернизвцией вашего скрипта, но к сожалению у вас установлено ограничение на длину комментариев и не получается опубликовать что я изменил.


     
    Информация
     
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


    Поиск по сайту:


    Облако тегов
    Android, Arduino, backup, CentOS, cmd, div, DLE, DLE хаки, domoticz, dzvents, event, Home Assistant, Linux, log, LUA, Monster, ogf3, RDP, Template, VBS, w2k8, windows, WSH, бумага, бумажный самолетик, верстка, иструкция, Карты, кино, Навигация, оригами, программа, рецензия, рецепт, скрипт, фигуры, шаблон, Яндекс, яндекс-карты

    Показать все теги
    Реклама
    раскрутка сайта бесплатно
    Главная страница | Регистрация | Добавить новость | Новое на сайте | Статистика | Поддержка | Правила ресурса Copyright © 2005-2018 by dimon - all right reserved!
    Тираж:           экземпляров.   Дизайн, верстка by dimon