Обычный пинг, но нужно что бы все что там он пишет в окне дублировалось в лог-файл
Доброго всем дня.
Помогите мне доделать Bat-ник не большой. Это обычный пинг, но нужно что бы все что там он пишет в окне дублировалось в лог-файл txt. Найти то я это нашел как делать, но проблема у меня немного шире. Та команда просто переписывает в файле все заново... А мне нужно что бы это все это копилось там в файле... Вот мой вариант - @Echo Off echo -------------------------------------------------------- ping -n 5 127.0.0.1 echo -------------------------------------------------------- echo Complette time pinging %time% @Echo Off echo. echo. echo. Echo Pause 60 seconds. Please Wait... echo. ping -n 60 127.0.0.1 > nul "%~f0" IP соответственно другой... Если можно как-нибудь заставить его вести обратный отсчет времени, будет просто супер...! Заранее благодарю.... |
1. Символ ">" создает файл заново, а ">>" добавляет к уже имеющемуся (если файла нет, то создает его).
2. На счет обратного отсчета времени и задания вообще - непонятно - может выложишь сюда проблему - народ что-нибудь предложет. |
Я обратный отсчет вот так делаю:
bat-файл, в консоли которого и происходит все действо: Код:
CSCRIPT "%~DP0\Reboot.vbs" Код:
For i=120 To 0 Step -5 |
...Ок. Спасибо, работает.
Теперь такая проблема. Это у меня логи пингов. Как вы видите батник создает лог с текущей датой. Это для того что бы потом можно было проанализировать по этим логам время когда отсутствовала связь. Просто часто пропадает связь. Нужно выяснить переодичность. Но, теперь батник все пинги добавляет как надо, дописывает в конец. И податам должен разбивать (еще не проверял, сегодня ночью только сделал). Но вот проблема - как туда в данный лог загнать дату и время каждго пинга. Вот что сейчас получилось - -------------------------------------------------------------------- Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Ping statistics for 127.0.0.1: Packets: Sent = 5, Received = 5, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 1ms, Average = 1ms Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 ------------------------------------------------------------------- А вот как хотелось бы - -------------------------------------------------------------------- Date 23-12-2009 16;53;30 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Ping statistics for 127.0.0.1: Packets: Sent = 5, Received = 5, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 1ms, Average = 1ms Date 23-12-2009 16;54;30 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 Reply from 127.0.0.1: bytes=32 time=1ms TTL=63 ------------------------------------------------------------------- Суть в том что бы можно было отследить когда не было связи и переодичность обрывов. А в таком варианте все пинги без дат и времени и ни как не отследишь когда был обрыв. В принципе в самом батнике и дату и время я прописал. В самом окне это отображается, но в логи не пишется. Вот в чем проблема по сути. Очень прошу помочь, заранее благодарю. |
Вот полный вариант батника -
@Echo Off echo. echo -------------------------------------------------------------------------- echo TEL. NUMBER 7777 [MAC ADRESS 00-0E-EF-A9-CF-96] echo Date %date:~0,2%-%date:~3,2%-%date:~6,4% %time% echo -------------------------------------------------------------------------- ping -n 5 127.0.0.1 ping -n 5 127.0.0.1>> %DATE%.txt echo -------------------------------------------------------------------------- echo Complette time pinging %time% @Echo Off echo. echo. Echo Pause 60 seconds. Please Wait... echo. ping -n 60 127.0.0.1 > nul "%~f0" МНЕ НУЖНО ЧТО БЫ РЕЗУЛЬТАТ ЭТОЙ СТРОКИ - echo Date %date:~0,2%-%date:~3,2%-%date:~6,4% %time% (это дата и время). ТОЖЕ ПИСАЛСЯ В ЛОГ ФАЙЛ. Спасибо. |
Как я понял ТЗ:
1. Батник запускается либо ручками либо по заданию - т.е. все время на компе не висит (это хорошо, т.к. CMD как и любой интерпретатор дико жрет ресурсы - CPU time) и надо просто собирать лог когда пинги не проходили (удачные пинги нас мало интересуют). Логи разбиваются по датам (в примере сортировка жутко неудобная - поверь, я так когда-то по заданию бэкапил базы 1С а потом разбирался где и что). Но я бы держал все в одном файле. 2. Если такая бякость как отваливание интерфейса случается, то желательно держать батник всегда, но чтобы он "не светился" и постараться не слишком нагружать проц. как вариант относительно универсальное решение, но пинг какого-то конкретного адреса мне не совсем понятен - либо это шлюз ISP либо пинг внешнего IP удаленного офиса, где как раз проблемы и бывают. Если пингуется что-то из своей сети для тестирования своей сети, то желательно пинговать сразу несколько адресов, например шлюз ISP, какой-нить "ya.ru", "cnn.com", "w3c.org" - если хоть кто-то откликнулся - значит иНет скорее есть, чем нет, а проблема не у Вас, а у пингуемого ресурса... Код:
@Echo off |
...Спасибо большое. Очень полезная штука. Я даже и незнал что в батниках так много переменных.
Сильно этим не баловался... А теперь вот приперло... Код конечно хороош, но мне не все тут нужно. Хотя некоторые вещи я взял отсюда. Благодарю... Вот что мне нужно было в итоге - @Echo Off :begin set /A count=count+1 echo -------------------------------------------------------- echo TESTING & MONITORING IP PHONE "COMPANY NAME" echo TEL. NUMBER XXXX [MAC ADRESS 00-0E-EF-A9-CF-96] echo Date %date:~0,2%-%date:~3,2%-%date:~6,4% Time%time% echo -------------------------------------------------------- echo TESTING MONITORING IP PHONE "COMPANY NAME">> %DATE%.txt echo Phone NUMBER XXX [MAC ADRESS 00-0E-EF-A9-CF-96]>> %DATE%.txt echo Date %date:~0,2%-%date:~3,2%-%date:~6,4% Time%time%>> %DATE%.txt ping -n 5 127.0.0.1 ping -n 4 127.0.0.1>> %DATE%.txt if errorlevel 1 echo PING NO SUCCESSFULL ERROR-5300 %time%>> %DATE%.txt echo. echo -------------------------------------------------------- if errorlevel 0 echo ********************************************************>> %DATE%.txt echo Pause: 30 seconds.>> %DATE%.txt if errorlevel 0 echo ********************************************************>> %DATE%.txt echo. if errorlevel 1 echo PING NO SUCCESSFULL %time% @Echo Off Echo Pause 30 seconds. Please Wait... ping -n 30 127.0.0.1 >nul cls echo. echo Pinging number %count% goto begin ...Потом нужно модифицировать этот код. Потому как я не смог сюда прикрутить параметры записи в лог файл только тех записей которые не пингуются... В данном варианте пишутся все записи пингов, а потом просто ctrl+F и набираю в строке поиска 5300 и он ищет соответствующие записи с таким текстом. А это у меня что-то типа кода ошибки. Вот так я пока вышел из положения... Потом еще предстоит пару бессонных ночей и все будет нормально думаю... БЛАГОДАРЮ ВСЕХ КТО МНЕ ПОМОГ... reginfonet@yandex.ru (это на всякий случай). Удачи... |
...Это опять я. Приветствую.
Проблема такая. Такие батники (их будет порядка 10) будут запущены на отдельно выделенной для этого машине и нужно что бы этот они сохраняли логи на другом сервере... Где и как прописать путь сохранения логов?..!!! Заранее благодарю... |
1. Если нужно, что бы результат какой-либо команды выводился на экран, если все ОК или в файл, если произошла ошибка, то перед перенаправлением используют номер типа сообщения (не помню как правильно называется). Чаще всего используют код "2" - ошибка. Например, ping -n 1 127.0.0.1 2>>Error.txt - если ошибки не было - сообщение будет на экране, если пинг не прошел - то в файле Error.txt
2. Если у пользователя, от чьего имени запускаются батники, есть доступ к расшаренной на другом компе папки, то в один файл легко можно скидывать лог аж сразу с нескольких батников, т.к. проблема может возникнуть только если сообщение будет выводится одновременно. В качестве имени файла указывается полный путь: \\ServerName\ShareName\File. Если в пути встречаются пробелы и прочие нехорошие символы ;) то весть путь берется в двойные кавычки: "\\SRV01\Data\Any Logs\IP Phone.log" |
Коллеги, доброй ночи. По последнему комментарию
"1. Если нужно, что бы результат какой-либо команды выводился на экран, если все ОК или в файл, если произошла ошибка, то перед перенаправлением используют номер типа сообщения (не помню как правильно называется). Чаще всего используют код "2" - ошибка. Например, ping -n 1 127.0.0.1 2>>Error.txt - если ошибки не было - сообщение будет на экране, если пинг не прошел - то в файле Error.txt" - так не получается... то есть, суть проблемы - после выполнения пинга, не важно, с выводом в лог (типа C:\windows\system32\ping 192.168.1.3 >>D:\Diagnostic\%date%.txt) или нет, я не хотел бы разбираться, что вывалилось в лог, а следом создать маленькую логичечкую команду, которая бы проверяла, что если пинг был, то записать "ок" (типа if errorlevel 0 echo OK >>D:\Diagnostic\%date%.txt), а если нет, то записать в лог "alarm". Не пойму, где засада! Заранее благодарю! |
Цитата:
Код:
(ping -n 1 192.168.1.1 && echo ok || echo alarm |
Доброе утро.
Решение хорошее - (ping -n 1 192.168.1.1 && echo ok || echo alarm )>>"D:\Diagnostic\%date%.txt" но в таком случае все выполнение команды ping валится в лог (насколько я понял, из-за наличия круглых скобок). У меня получилось, как мне кажется, более интересно, так как смог разобраться с кодами возврата и в лог теперь складываются только результаты: C:\windows\system32\ping 192.168.1.1 -n 3 if not errorlevel 1 echo OK >>"D:\Diagnostic\%date%.txt" if errorlevel 1 echo ALARM >>"D:\Diagnostic\%date%.txt" Уверен, что можно было две последних строки реализовать одной с помощью команды ELSE, но почему-то у меня не получилось и я пока остановился на достигнутом... но в любом случае спасибо! |
саму проверку можно сделать так: (if errorlevel 1 (echo ALARM) else (echo OK)) >>"D:\Diagnostic\%date%.txt"
А еще ErrorLevel можно использовать как переменную: set Err=%ErrorLevel% а дальше работать с ней как угодно. Еще, если варианты кода ошибки ограничены по кол-ву и заранее известны, то можно обработать так: GoTo :Err%ErrorLevel% :Err0 :Err2 |
Цитата:
результаты пинга можно подавить: Код:
@(ping -n 1 192.168.1.1 >nul 2>&1&& echo ok || echo alarm |
NiOl , amel27 , оба Ваши идеи хороши, спасибо за предложение!
Но теперь у меня есть еще один вопрос. Для обобщения полученных диагностических данных и получения картины, скажем, за месяц было бы здорово всю информацию из лога (с расширением txt) закидывать в предварительно подготовленный документ excel в нужные ячейки, то есть там сделать таблицу: горизонтально - даты, вертикально - IP-адреса. И затем результаты размещать в нужных ячейках. Тогда была бы вообще красота - открываешь экселёвый документ и сразу видишь, как машинки работали за период времени, где и когда были траблы и т. д. Что скажете? |
Цитата:
|
У меня вот какая мысль появилась - сразу делать в виде диагностики не *.txt, а xls-файл, и плюс создать обощенную таблицу (тоже в екселе) с именами компов и днями. В нем создать гиперссылки на значения в ежедневных файликах (они будут называться по дате), в которых структура меняться не будет. Таким образом, в сводной таблице будет отображена общая картина по компам и дням сразу.
|
Denis-reut, это уже скорее в VBS/VBA, рядом тема: Тестирование сетки
|
Непонятно только, если нужен запутанный отчет, то почему сразу XLS... по мне - так приятнее в виде HTML (ИМХО).
|
NiOl, по поводу html можно поподробнее? Есть какие-то реализации на данную тему?
|
Наработок по пингам нету, но генерить HTML-ки в пакетных файлах не столь сложно. Просто много символов "^" приходится использовать. Но чтобы ваять такую отчетность, нужно сызнова разобраться в условиях того, что нужно - скрипт запускается временами / висит всегда (и впустую нагружает CPU) / самостоятельно запускается раз в какое-то время (и не нагружает систему, но при глюке планировщика свалится), просматривает компы в локальной сети - все ли компы отвечают на пинг? (я на такое наткнулся некоторое время назад, решение есть), как генерится отчетность (автоматом раз в сутки или по запросу), действительно ли нужно генерить море страниц "по дням", какая инфа должно отображаться в отчетности, желательно с образцом того, что нужн на выходе.
|
День добрый,
можно ли средством батника отправить им же записанный лог по почте, по завершению пинга? Заранее сенкс.... |
Цитата:
|
Доброе утро.
Я тоже рекомендую использовать для этих целей blat.exe. Единственное "но" - если используете в качестве антивиря мак'афи - добавьте в исключение blat.exe для доставки сообщений. У меня цепочка такая - первым батником проводится диагностика, если все нормально - просто пишется лог. Если есть трабл - запускается второй батник, который запускает blat. очень просто и надежно. |
Забыл добавить - по поводу отправки лога, который был создан батником: если пингуется достаточно большой диапазон IP-адресов, то возможна ситуация, когда первый или второй (или и первый, и второй) по списку IP-адрес будет недоступен, blat сформирует и отправит письмо, а в нем остальной диагностики не будет (или будет неполной), потому что диагностика еще не выполнилась. Задержку в синтаксисе команды blat сделать нельзя. Выход - в теле письма указывать ссылку на сформированный лог, например, \\server\diagnostic\%date%.txt
|
Замечательная программа, настроил отправку по датам... Ещё раз всем спасибо!
|
Время: 09:28. |
Время: 09:28.
© OSzone.net 2001-