Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Обычный пинг, но нужно что бы все что там он пишет в окне дублировалось в лог-файл

Ответить
Настройки темы
CMD/BAT - Обычный пинг, но нужно что бы все что там он пишет в окне дублировалось в лог-файл

Пользователь


Сообщения: 130
Благодарности: 3

Профиль | Отправить 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

 

Старожил


Сообщения: 425
Благодарности: 108

Профиль | Отправить PM | Цитировать


1. Символ ">" создает файл заново, а ">>" добавляет к уже имеющемуся (если файла нет, то создает его).
2. На счет обратного отсчета времени и задания вообще - непонятно - может выложишь сюда проблему - народ что-нибудь предложет.

-------
Как сказало Дерево Дровосеку: "я - пень".

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:20, 23-12-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 72
Благодарности: 26

Профиль | Сайт | Отправить PM | Цитировать


Я обратный отсчет вот так делаю:
bat-файл, в консоли которого и происходит все действо:
Код: Выделить весь код
CSCRIPT "%~DP0\Reboot.vbs"
Shutdown.exe -r -t 00 -c "Administrative reboot."
vbs-файл, который вызывается из bat-файла, он, собственно и реализует обратный отсчет на 120 секунд с показом сообщения в консоли каждые 5 секунд:
Код: Выделить весь код
For i=120 To 0 Step -5
  WScript.echo "The system will be rebooted in " & i & " seconds"
  WScript.Sleep(5000)
Next
оба скрипта и файл Shutdown.exe должны лежать в одном каталоге

-------
Статьи для системных инженеров http://www.sysengineering.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:37, 23-12-2009 | #3


Пользователь


Сообщения: 130
Благодарности: 3

Профиль | Отправить 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


Пользователь


Сообщения: 130
Благодарности: 3

Профиль | Отправить 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


Старожил


Сообщения: 425
Благодарности: 108

Профиль | Отправить 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


Пользователь


Сообщения: 130
Благодарности: 3

Профиль | Отправить 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


Пользователь


Сообщения: 130
Благодарности: 3

Профиль | Отправить PM | Цитировать


...Это опять я. Приветствую.

Проблема такая.
Такие батники (их будет порядка 10) будут запущены на отдельно выделенной для этого машине и
нужно что бы этот они сохраняли логи на другом сервере...
Где и как прописать путь сохранения логов?..!!!

Заранее благодарю...

Отправлено: 20:36, 24-12-2009 | #8


Старожил


Сообщения: 425
Благодарности: 108

Профиль | Отправить 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
Благодарности: 1

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Обычный пинг, но нужно что бы все что там он пишет в окне дублировалось в лог-файл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
комп. не загружается, пишет пару строк и все что делать? новичек Непонятные проблемы с Железом 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




 
Переход