Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Пинг с последующим исключением (http://forum.oszone.net/showthread.php?t=230777)

root221 19-03-2012 20:40 1882693

Пинг с последующим исключением
 
Здравствуйте,

Нужен скриптик который будет пинговать адреса из списка Spisok.txt и все адреса которые доступны, нужно что-бы заносились в список Alive.txt а все которые не доступны, в список Err.txt, ну и общий список all_test.txt в который нужно заносить все адреса, которые были проверены скриптом.

Далее.

Нужно что бы когда всё проверилось и я добавил в Spisok.txt новые адреса то те адреса которые уже были проверены ранее и присутствуют в списке all_test.txt, больше не проверялись и из списка Spisok.txt проверялись только те, которых ещё нет в списке all_test.txt

Пока на этом всё, жду ваших вариантов, Заранее благодарен!

Foreigner 19-03-2012 22:20 1882774

root221,
Код:

@echo off
setlocal

if not exist all_test.txt 1>all_test.txt echo 127.0.0.1
for /f %%i in (' findstr /v /g:all_test.txt spisok.txt ') do (

    1>>all_test.txt echo %%i
    1>nul ping -n 1 %%i && 1>>alive.txt echo %%i || 1>>err.txt echo %%i

)


root221 19-03-2012 23:10 1882818

ничего не понял(

вот список

Код:

127.0.0.1:123
127.0.0.2:123
127.0.0.3:123

нужно сделать delims=:

проверять пинги адресов из списка Spisok.txt...

те адреса которые доступны нужно заносить в список alive.txt

которые не доступны в список err.txt

все которые проверились в список all_test.txt

потом я обновлю списк Spisok.txt и там могут быть совпадения что бы их убрать нужно сравнить списк all_test.txt и убрать совпадения из списка Spisok.txt а потом начать сканировать только те адреса которых ещё нет в списке all_test.txt и добавлять новые которые будут отсканированы из списка Spisok.txt в список all_test.txt, и так каждый раз

Foreigner 19-03-2012 23:24 1882841

Цитата:

Цитата root221
вот список »

А что за ":123" ? У меня без этого все работает.

Код:

@echo off
setlocal

if not exist all_test.txt 1>all_test.txt echo 127.0.0.1:123
for /f "tokens=1,2 delims=:" %%i in (' findstr /v /g:all_test.txt spisok.txt ') do (

    1>>all_test.txt echo %%i:%%j
    1>nul ping -n 1 %%i && 1>>alive.txt echo %%i:%%j || 1>>err.txt echo %%i:%%j

)


root221 20-03-2012 03:35 1882956

Цитата:

Цитата Foreigner
А что за ":123" ? У меня без этого все работает. »

порт

не могу понять зачем тут

Код:

if not exist all_test.txt 1>all_test.txt echo 127.0.0.1:123
127.0.0.1 это пример)))) адреса могут быть другими

у меня он не работает =)

Ошибка findstr

root221 20-03-2012 03:53 1882961

В общем вот...

Код:

For /F "tokens=1,2 delims=:" %%A In (List.lst) Do (
ping -a -n 2 -w 400 %%A|Find /I "TTL=">nul&&(
Echo %%A - OK
Echo %%A>>List_Yes.lst
)||(
Echo %%A - Error
Echo %%A>>List_No.lst
)
)

нужно просто всегда сравнивать List_No.lst и основной список который будет обновляться List.lst, на совпадения и если они есть тогда чистить List.lst от адресов которые уже ранее были проверены.

Foreigner 20-03-2012 06:41 1882983

Цитата:

Цитата root221
не могу понять зачем тут »

На случай если нет файла all_test.txt, он создается, а 127.0.0.1:123 просто чтобы в этом файле была строка, любая строка.

Цитата:

Цитата root221
В общем вот... »

У меня тоже самое. Но в цикле findstr забирает из spisok.txt только те строки, которых нет в all_test.txt
Код:

findstr /v /g:all_test.txt spisok.txt

root221 20-03-2012 14:00 1883225

Foreigner, странно добавляю в spisok.txt адреса вида 127.0.0.1:1234, запускаю ваш скрипт и он тупо закрывается, мельком в лаге удалось мне прочитать что какая-то ошибка в findstr

если что моя OS: WinXP SP3

всё.. я разобрался

можно ещё сделать что бы всё выводилось в консоль? что-бы я видел как идёт сканирование и с нумерацией

примерно так..

[1/999] 127.0.0.1:123
[2/999] 127.0.0.2:1234
[3/999] 127.0.0.1:12345

ну и в конце пауза с сообщением..

Код:

echo Сканирование завершено - Теперь можно закрыть консоль.

Delirium 20-03-2012 14:11 1883236

Цитата:

Цитата root221
мельком в лаге удалось мне прочитать »

в самом конце скрипта напиши pause и увидишь полный текст ошибки.

root221 20-03-2012 15:25 1883306

Delirium, я же написал уже что разобрался и попросил доделать немного.

Foreigner 20-03-2012 19:53 1883481

Цитата:

Цитата root221
всё.. я разобрался »

Значит работает.
Цитата:

Цитата root221
примерно так..
[1/999] 127.0.0.1:123
[2/999] 127.0.0.2:1234
[3/999] 127.0.0.1:12345 »

999 - это что? Без 999:
Код:

@echo off
setlocal enabledelayedexpansion

set "num=1000"


if not exist all_test.txt 1>all_test.txt echo 127.0.0.1:123
for /f "tokens=1,2 delims=:" %%i in (' findstr /v /g:all_test.txt spisok.txt ') do (

    1>>all_test.txt echo %%i:%%j
    1>nul ping -n 1 %%i && 1>>alive.txt echo %%i:%%j || 1>>err.txt echo %%i:%%j
    set /a num+=1
    echo [!num:~-3!] %%i:%%j


)
echo Done

Совет: Ставь задачу сразу полностью. Ради добавления какого-либо функционала в некоторых случаях придется многое переделывать

root221 20-03-2012 22:56 1883601

Foreigner,

999 Ну это количество строк всего и сколько уже завершено =)

Всё всем спасибо я во всём разобрался.

Foreigner 20-03-2012 23:04 1883608

Цитата:

Цитата root221
999 Ну это количество строк всего и сколько уже завершено »

А зачем все строки из spisok.txt, если обрабатываются только те, которых нет в all_test.txt?


Время: 18:15.

Время: 18:15.
© OSzone.net 2001-