Показать полную графическую версию : [решено] Пинг с последующим исключением
Здравствуйте,
Нужен скриптик который будет пинговать адреса из списка 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
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
)
ничего не понял(
вот список
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
вот список »
А что за ":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
)
А что за ":123" ? У меня без этого все работает. »
порт
не могу понять зачем тут
if not exist all_test.txt 1>all_test.txt echo 127.0.0.1:123
127.0.0.1 это пример)))) адреса могут быть другими
у меня он не работает =)
Ошибка findstr
В общем вот...
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
не могу понять зачем тут »
На случай если нет файла all_test.txt, он создается, а 127.0.0.1:123 просто чтобы в этом файле была строка, любая строка.
В общем вот... »
У меня тоже самое. Но в цикле findstr забирает из spisok.txt только те строки, которых нет в all_test.txt
findstr /v /g:all_test.txt spisok.txt
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
мельком в лаге удалось мне прочитать »
в самом конце скрипта напиши pause и увидишь полный текст ошибки.
Delirium, я же написал уже что разобрался и попросил доделать немного.
Foreigner
20-03-2012, 19:53
всё.. я разобрался »
Значит работает.
примерно так..
[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
Совет: Ставь задачу сразу полностью. Ради добавления какого-либо функционала в некоторых случаях придется многое переделывать
Foreigner,
999 Ну это количество строк всего и сколько уже завершено =)
Всё всем спасибо я во всём разобрался.
Foreigner
20-03-2012, 23:04
999 Ну это количество строк всего и сколько уже завершено »
А зачем все строки из spisok.txt, если обрабатываются только те, которых нет в all_test.txt?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.