|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Обычный пинг, но нужно что бы все что там он пишет в окне дублировалось в лог-файл |
|
|
CMD/BAT - Обычный пинг, но нужно что бы все что там он пишет в окне дублировалось в лог-файл
|
Пользователь Сообщения: 132 |
Профиль | Отправить PM | Цитировать Доброго всем дня.
Помогите мне доделать 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 соответственно другой... Если можно как-нибудь заставить его вести обратный отсчет времени, будет просто супер...! Заранее благодарю.... |
|
Отправлено: 07:45, 23-12-2009 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать 1. Символ ">" создает файл заново, а ">>" добавляет к уже имеющемуся (если файла нет, то создает его).
2. На счет обратного отсчета времени и задания вообще - непонятно - может выложишь сюда проблему - народ что-нибудь предложет. |
------- Отправлено: 12:20, 23-12-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 72
|
Профиль | Сайт | Отправить PM | Цитировать Я обратный отсчет вот так делаю:
bat-файл, в консоли которого и происходит все действо: vbs-файл, который вызывается из bat-файла, он, собственно и реализует обратный отсчет на 120 секунд с показом сообщения в консоли каждые 5 секунд: оба скрипта и файл Shutdown.exe должны лежать в одном каталоге |
------- Отправлено: 14:37, 23-12-2009 | #3 |
Пользователь Сообщения: 132
|
Профиль | Отправить PM | Цитировать ...Ок. Спасибо, работает.
Теперь такая проблема. Это у меня логи пингов. Как вы видите батник создает лог с текущей датой. Это для того что бы потом можно было проанализировать по этим логам время когда отсутствовала связь. Просто часто пропадает связь. Нужно выяснить переодичность. Но, теперь батник все пинги добавляет как надо, дописывает в конец. И податам должен разбивать (еще не проверял, сегодня ночью только сделал). Но вот проблема - как туда в данный лог загнать дату и время каждго пинга. Вот что сейчас получилось - -------------------------------------------------------------------- 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 ------------------------------------------------------------------- Суть в том что бы можно было отследить когда не было связи и переодичность обрывов. А в таком варианте все пинги без дат и времени и ни как не отследишь когда был обрыв. В принципе в самом батнике и дату и время я прописал. В самом окне это отображается, но в логи не пишется. Вот в чем проблема по сути. Очень прошу помочь, заранее благодарю. |
Отправлено: 15:06, 23-12-2009 | #4 |
Пользователь Сообщения: 132
|
Профиль | Отправить PM | Цитировать Вот полный вариант батника -
@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% (это дата и время). ТОЖЕ ПИСАЛСЯ В ЛОГ ФАЙЛ. Спасибо. |
|
Отправлено: 16:15, 23-12-2009 | #5 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Как я понял ТЗ:
1. Батник запускается либо ручками либо по заданию - т.е. все время на компе не висит (это хорошо, т.к. CMD как и любой интерпретатор дико жрет ресурсы - CPU time) и надо просто собирать лог когда пинги не проходили (удачные пинги нас мало интересуют). Логи разбиваются по датам (в примере сортировка жутко неудобная - поверь, я так когда-то по заданию бэкапил базы 1С а потом разбирался где и что). Но я бы держал все в одном файле. 2. Если такая бякость как отваливание интерфейса случается, то желательно держать батник всегда, но чтобы он "не светился" и постараться не слишком нагружать проц. как вариант относительно универсальное решение, но пинг какого-то конкретного адреса мне не совсем понятен - либо это шлюз ISP либо пинг внешнего IP удаленного офиса, где как раз проблемы и бывают. Если пингуется что-то из своей сети для тестирования своей сети, то желательно пинговать сразу несколько адресов, например шлюз ISP, какой-нить "ya.ru", "cnn.com", "w3c.org" - если хоть кто-то откликнулся - значит иНет скорее есть, чем нет, а проблема не у Вас, а у пингуемого ресурса... @Echo off SetLocal EnableExtensions rem Флаг подпроцесса. Устанавливается в режиме Multi. Запуск батника с параметром "." запрещен! if "%1"=="." Goto Once set Name=%~dpn0 set Ext=%~x0 rem Значения "по-умолчанию" set IP=ya.ru set Wait=120 set LogFile=%Name%.txt set Log=SingleLog rem set Log=MultiLog set Mode=Once rem set Mode=Multi rem Чтение и обработка параметров. Порядок любой, возможны повторы. :ParamChk cls rem Инфа для сообщения о неправильном параметре. Если все ОК, то инфа пропадет. if "%1"=="" Goto %Mode% Echo Error! Wrong Parameter! Echo. Echo Use: %Name% [/W nnn] [/IP addr] [/O] [/i] [/S] [/M] Echo. Echo /W - Wait for nnn Seconds between Tests Echo /IP - Destination Address (IP or FQDN). * If Address FQDN (like ya.ru) - Test can fail on DNS Echo /O or /I - Instance: Once or Infinite (use TaskManager to Break CMD service) Echo /S or /M - LogFile Name: Single (ChkNet.txt) or Multi (Based on Date, Ex: ChkNet_2009-12-23.txt) Goto P%1 :P/W if not "%2"=="" set Wait=%2 shift & shift & goto ParamChk :P/IP if not "%2"=="" set IP=%2 shift & shift & goto ParamChk :P/O set Mode=Once shift & goto ParamChk :P/I set Mode=Multi shift & goto ParamChk :P/S set Log=SingleLog shift & goto ParamChk :P/M set Log=MultiLog shift & goto ParamChk :Once rem дата/время в виде yyyy-mm-dd_hh-mm-ss - очень удобно для имен файлов и логов set tm=%time::=-% set tm=%date:~6,4%-%date:~3,2%-%date:~0,2%_%tm:~0,-3% goto %Log% :MultiLog rem Высчитываем новое имя файла Лога (если включен режим /M) set LogFile=%Name%_%tm:~0,10%.txt :SingleLog rem Пингуем ресурс и если ошибка - записываем в лог текущие дату/время. * После команды Ping сразу должна идти команда IF ping -n 1 %IP% >nul if errorlevel 1 echo %tm%>>%LogFile% if %Mode%==Once exit rem Задержка перед следующим пингом. Адрес лучше не менять ping -n %Wait% 127.0.0.1 >nul Goto Once :Multi Запуск самого себя в виде процесса - т.е. как "программа" батник виден не будет. start /b /low %Name%%Ext% . |
Отправлено: 22:34, 23-12-2009 | #6 |
Пользователь Сообщения: 132
|
Профиль | Отправить PM | Цитировать ...Спасибо большое. Очень полезная штука. Я даже и незнал что в батниках так много переменных.
Сильно этим не баловался... А теперь вот приперло... Код конечно хороош, но мне не все тут нужно. Хотя некоторые вещи я взял отсюда. Благодарю... Вот что мне нужно было в итоге - @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 (это на всякий случай). Удачи... |
Отправлено: 04:06, 24-12-2009 | #7 |
Пользователь Сообщения: 132
|
Профиль | Отправить PM | Цитировать ...Это опять я. Приветствую.
Проблема такая. Такие батники (их будет порядка 10) будут запущены на отдельно выделенной для этого машине и нужно что бы этот они сохраняли логи на другом сервере... Где и как прописать путь сохранения логов?..!!! Заранее благодарю... |
Отправлено: 20:36, 24-12-2009 | #8 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать 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" |
------- Отправлено: 15:51, 25-12-2009 | #9 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Коллеги, доброй ночи. По последнему комментарию
"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". Не пойму, где засада! Заранее благодарю! |
Отправлено: 00:08, 12-10-2010 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
комп. не загружается, пишет пару строк и все что делать? | новичек | Непонятные проблемы с Железом | 55 | 01-05-2019 16:19 | |
Router - что то я совсем запутался... подскажите что мне нужно? роутеры, маршрутизаторы... | nafnaf | Хочу все знать | 29 | 16-05-2010 21:32 | |
Как убедиться что XPCREATE интегрировал все что от него хотели ? | shamandim | Автоматическая установка Windows 2000/XP/2003 | 1 | 26-03-2006 22:28 | |
Все что нужно для mp4+H.264+AAC в одном файле | redbaron | Видео и аудио: обработка и кодирование | 9 | 09-12-2004 10:38 | |
Что такое ЛОГ ?! | Guest | Хочу все знать | 1 | 16-09-2002 08:31 |
|