1

Тема: CMD/BAT: ping в txt

Доброго времени суток, уважаемые Мощные.
Помогите мне дописать код.
Мне надо сделать пинг на №-ые 30 ip предположим на 192.168.1.10 - 192.168.1.15 Когда отсутствует сеть то в текстовом файле создал и сохранил отчет в виде:

25-07-2012:16-30 пинг пропал на ip 92.168.1.10
25-07-2012:16-40 пинг появился на ip 92.168.1.10

и в каждой сети отдельный отчет по ip.
пжлст помогите исходником.....

2

Re: CMD/BAT: ping в txt

Добрый день.

Ковыряй в эту сторону, по хорошему надо организовать цикл и через переменные перебить ip

@echo off
ping -n 2 92.168.1.10 | find "TTL=" > nul
if %errorlevel%==1 echo Ping Propal %date% %time% >> 92.168.1.10.txt

3 (изменено: powerwer, 2012-07-27 08:31:33)

Re: CMD/BAT: ping в txt

Vetal142 пишет:

Добрый день.

Ковыряй в эту сторону, по хорошему надо организовать цикл и через переменные перебить ip

@echo off
ping -n 2 92.168.1.10 | find "TTL=" > nul
if %errorlevel%==1 echo Ping Propal %date% %time% >> 92.168.1.10.txt

Vetal142 - честно говоря я не понимаю в bat файлах, мне рекомендовали сделать все это с bat-ом по этому я обращаюсь к вам за помощью.

4

Re: CMD/BAT: ping в txt

powerwer, ip адреса в одной подсети 192.168.1 или она все время меняеться?

5

Re: CMD/BAT: ping в txt

возможно есть вариант по короче, у меня получилось так:

@echo off
rem под сеть IP которую проверяем берем из первого параметра батника
set ipset=%~n1
set tochka=.

rem временная переменная
set k=%~x1

rem с какого IP начинать провертят         
set a=%k:~1,3%

rem на каком IP заканчивать проверку
set k=%~x2
set b=%k:~1,3%

for /l %%i in (%a%,1,%b%) do ( call :pingtest %ipset%%tochka%%%i% )
goto exit

rem ################################################################
:pingtest
setlocal

    ping -n 2 %~1 | find "TTL=" > nul
        if %errorlevel%==1 (
            echo Ping Propal %date% %time% >> %~1.txt
        ) else (
            echo Ping Poyavilsa %date% %time% >> %~1.txt
            )                  
endlocal
exit /b 0
rem ################################################################

:exit

powerwer, при копировании этого текста в батник главное не назови его (батник) ping или pingtest, а то получишь рекурсивный вызов.
Так как ответ на свой вопрос не получил сделал самый простой вариант который проверяет ip адреса в одной подсети например 192.168.1.* и результат записывает в текстовый файл ip.txt.
Запускать в следующем виде "file.bat 192.168.1.10 192.168.1.20"

Мастера, если видите корявость кода, подскажите как его улучшить и оптимизировать.

6

Re: CMD/BAT: ping в txt

а то получишь рекурсивный вызов.

ping.exe -n 2 %~1 | find "TTL=" > nul

7 (изменено: powerwer, 2012-08-01 14:42:52)

Re: CMD/BAT: ping в txt

MegaScrew пишет:

возможно есть вариант по короче, у меня получилось так:

@echo off
rem под сеть IP которую проверяем берем из первого параметра батника
set ipset=%~n1
set tochka=.

rem временная переменная
set k=%~x1

rem с какого IP начинать провертят         
set a=%k:~1,3%

rem на каком IP заканчивать проверку
set k=%~x2
set b=%k:~1,3%

for /l %%i in (%a%,1,%b%) do ( call :pingtest %ipset%%tochka%%%i% )
goto exit

rem ################################################################
:pingtest
setlocal

    ping -n 2 %~1 | find "TTL=" > nul
        if %errorlevel%==1 (
            echo Ping Propal %date% %time% >> %~1.txt
        ) else (
            echo Ping Poyavilsa %date% %time% >> %~1.txt
            )                  
endlocal
exit /b 0
rem ################################################################

:exit

powerwer, при копировании этого текста в батник главное не назови его (батник) ping или pingtest, а то получишь рекурсивный вызов.
Так как ответ на свой вопрос не получил сделал самый простой вариант который проверяет ip адреса в одной подсети например 192.168.1.* и результат записывает в текстовый файл ip.txt.
Запускать в следующем виде "file.bat 192.168.1.10 192.168.1.20"

Мастера, если видите корявость кода, подскажите как его улучшить и оптимизировать.

Терминальный сервер у меня на другой подсети а пользователи на другой, я хочу запустить его на серваке чтоб фиксировал и пропадание сетей. и еще будет ли работать этот батник в windows 2008 R2 64X ?

8 (изменено: MegaScrew, 2012-08-01 17:36:31)

Re: CMD/BAT: ping в txt

powerwer, так попробуйте запустить под win 2008, не думаю что ping.exe или cmd.exe сильно отличаются от тех что на win 7 Pro.
Не забудьте сюда написать работает или нет.

9 (изменено: powerwer, 2012-08-01 20:35:58)

Re: CMD/BAT: ping в txt

MegaScrew пишет:

Запускать в следующем виде "file.bat 192.168.1.10 192.168.1.20"

Мастера, если видите корявость кода, подскажите как его улучшить и оптимизировать.

MegaScrew У меня получился такое, как ты показал назвал свой MySco.bat 192.168.1.10 192.168.1.20 и после это как обычно этот файл превращается на неопознанный т.к. после расширения файла не положено нечего добавить. Попробовал запустить без ip т.е. MyCso.bat и в итоге у  меня появился окошко cmd и через 2-3 секунды закрылся, сразу же создался .0.txt файл с вложениями
Ping Propal 01.08.2012 21:16:36,82
Ping Propal 01.08.2012 21:17:08,67

пишет что пропал но какой ip он пропинговал ? было бы замечательно если он написал бы Ping Propal 01.08.2012 21:16:36,82 192.168.1.10 и еще что означает 2 цыфры после даты - 21:16:36,82 ?
Может я что то не то сделал?  Исправьте ПЖЛСТ....

10

Re: CMD/BAT: ping в txt

ping xxx > nul || echo куйня какаято

Я конечно далек от мысли... (с)

11

Re: CMD/BAT: ping в txt

smaharbA пишет:

ping xxx > nul || echo куйня какаято

это мнение или решение?

12

Re: CMD/BAT: ping в txt

powerwer, сделайте следующее:
1) переименуйте файл в MyCso.bat
2) скопируйте или перенесите файл MyCso.bat в корень диска d:\ или c:\ диска, главное что бы у Вас были права на запись на этом диске
3) запустите cmd.exe если не знаете как то напишите
4) в командной строке cmd.exe перейдите в папку куда Вы скопировали MyCso.bat
5) и наберите: MySco.bat 192.168.1.10 192.168.1.20
PS:
192.168.1.10 и 192.168.1.20 - это параметры которые передаются батнику в командной строке

13

Re: CMD/BAT: ping в txt

решение в одну строку

cmd /v:on /q /c "set base=192.168.1&& for /l %x in (1,1,254) do (ping -n 1 -w 100 !base!.%x > nul 2>&1 || echo %date% %time% пинг пропал на ip !base!.%x)" > iplost.txt
Я конечно далек от мысли... (с)

14

Re: CMD/BAT: ping в txt

MegaScrew пишет:

powerwer, сделайте следующее:
1) переименуйте файл в MyCso.bat
2) скопируйте или перенесите файл MyCso.bat в корень диска d:\ или c:\ диска, главное что бы у Вас были права на запись на этом диске
3) запустите cmd.exe если не знаете как то напишите
4) в командной строке cmd.exe перейдите в папку куда Вы скопировали MyCso.bat
5) и наберите: MySco.bat 192.168.1.10 192.168.1.20
PS:
192.168.1.10 и 192.168.1.20 - это параметры которые передаются батнику в командной строке

MegaScrew ты ваааащеее молодец, круто. РЕСПЕКТ!!!! 

Как показал себя этот исходник.
Он сканировал под сеть "1", хоть есть или нет ping или нет он создавал отчет каждому ip подробно и сканировал только один раз и программа завершился.
заработал, все отлично, у кого был пинг во вложении txt файла написал пинг появился у кого нет то пинг пропал, есть одно "НО" этот код типа сканирует только один раз выбранную под сеть так? а как сделать чтоб он постоянно сканировал чтоб при отсутствии или появления сети сразу же добавил в отчет типа чтоб он всегда был на процессе чтоб можно было смотреть когда пропал сеть и когда появился....
И еще можно ли создать отчет по папкам с именем даты. пример папка с именем 01-08-2012 а внутри его все эти текстовые отчеты за 1-е августа и т.д.
Можно ли сделать так? 

15

Re: CMD/BAT: ping в txt

smaharbA пишет:

решение в одну строку

cmd /v:on /q /c "set base=с for /l %x in (1,1,254) do (ping -n 1 -w 100 !base!.%x > nul 2>&1 || echo %date% %time% пинг пропал на ip !base!.%x)" > iplost.txt

Уважаемый smaharbA, с запустил ваш исходник он у мне создал txt файл именем iplost с пустым вложением. и Еще вопоросик что означает 192.168.1&& и (1,1,254) ?

16

Re: CMD/BAT: ping в txt

powerwer пишет:

... есть одно "НО" этот код типа сканирует только один раз выбранную под сеть так? а как сделать чтоб он постоянно сканировал чтоб при отсутствии или появления сети сразу же добавил в отчет типа чтоб он всегда был на процессе чтоб можно было смотреть когда пропал сеть и когда появился....
И еще можно ли создать отчет по папкам с именем даты. пример папка с именем 01-08-2012 а внутри его все эти текстовые отчеты за 1-е августа и т.д.
Можно ли сделать так? 

Вот новый код с учетом твоих пожеланий:
1) отчеты в папке с именем 01-08-2012
2) после запуска батник работает по циклу, пока не нажмешь CTRL+C
3) после проверки всех IP адресов выдерживается пауза от 1 до 60 секунд.
Длину паузы указываешь сам при запуске батника MySco.bat 192.168.1.10 192.168.1.20 10


@echo off
rem подсеть IP которую проверяем берем из первого параметра батника
    set ipset=%~n1
    set tochka=.

rem временная переменная
    set k=%~x1

rem с какого IP начинать проверять         
    set a=%k:~1,3%

rem на каком IP заканчивать проверку
    set k=%~x2
    set b=%k:~1,3%

:cikl
    for /l %%i in (%a%,1,%b%) do ( call :pingtest %ipset%%tochka%%%i% )
    call :sleep %~3
    goto cikl

rem ################################################################
:pingtest
setlocal
    set mydir=%date:~0,2%-%date:~3,2%-%date:~6,4%
    if not exist %mydir% ( mkdir %mydir% )

    ping.exe -n 1 -w 1000 %~1 | find "TTL=" > nul
        if %errorlevel%==1 (
            echo Ping Propal %date% %time% >> %mydir%/%~1.txt
        ) else (
            echo Ping Poyavilsa %date% %time% >> %mydir%/%~1.txt
            )
endlocal
exit /b 0
rem ################################################################

rem ################################################################
:sleep
setlocal
    if %time:~5,2% EQU :0 (set /a ftime=%time:~7,-3%+%1 ) else ( set /a ftime=%time:~6,-3%+%1 )
    if %ftime% GEQ 60 set /a ftime-=60
    :loop
     if %time:~5,2% EQU :0 (set /a ctime=%time:~7,-3% ) else ( set /a ctime=%time:~6,-3% )
        if /i %ftime% NEQ %ctime% goto :loop
endlocal
exit /b 0
rem ################################################################

:exit

17 (изменено: alexii, 2012-08-04 05:45:58)

Re: CMD/BAT: ping в txt

MegaScrew, Работает 100%, как мне тебя отблагодарить? есть SKYPE или ICQ  ? отправь мне на мое мыло mehroj-1@mail.ru
РЕСПЕКТ - просто РЕСПЕКТ.
Тему можно закрыть....

18

Re: CMD/BAT: ping в txt

powerwer, избегайте бессмысленного цитирования. Я поправил Ваш пост.