Имя пользователя:
Пароль:
 

Название темы: Сканирование IP адресов
Показать сообщение отдельно

Старожил


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

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


В свое время у меня было 2 версии батника для такой задачи, но из-за некоторых новшевств начал разработу 3го (с самоопределением сетей и отчетами по изменениям в сетях), но из-за некоторых сложностей так и не закончил.
Кратко приведу некоторые сложности:

1. Начиная с XP2SP можно до посинения пинговать работающий компьютер - "100% потерь"
2. Операция эта не шибко быстрая, особенно при переборе отсутствующих адресов
3. Распараллеливание пинга дает приличное ускорение, но на загруженных всяким софтом компьютерах приводит к вываливанию с ошибкой половины команд пинга.

Если Вы осознаете всю сложность, то поймете, почему свежие наработки пока предоставить не могу (ибо скрипт живет своей жизнью), а вот Вам старенький. По-умолчанию проходит по 192.168.0.х, в качестве параметра можно задать другую подсеть, например 10.10.10:

Код: Выделить весь код
@echo off
rem 	13.08.2008

if `%1`==`_` (GoTo L%2) else (
if `%1`==`` (set Base=192.168.0) else set Base=%1)

set Logs=IP_List
Echo.>>IP_List.txt
Echo  IP-List of %Base%.0 at %Date%  %Time:~0,8%>>IP_List.txt
Echo ==================================================>>IP_List.txt

for /L %%z in (1,1,254) do (
 echo %Base%.%%z
 cmd /v:on /c %0 _ 1 %Base% %%z>>IP_List.err
 )
GoTo End

:L1
ping -a -w 50 -n 1 %3.%4>%Temp%\IP_List-%4.tmp
if ErrorLevel 1 (del %Temp%\IP_List-%4.tmp
 GoTo End)
set n=.
for /f "tokens=2 delims= " %%a in (%Temp%\IP_List-%4.tmp) do if !n!==. set n=%%a
set m=??-??-??-??-??-??
for /f "tokens=1,2 delims= " %%a in ('arp -a') do if `%%a`==`%3.%4` set m=%%b
echo %3.%4	%m%	%n% >>IP_List.txt
del %Temp%\IP_List-%4.tmp

:End
exit
зы: На выходе генерит пару файлов IP_List.*

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


Отправлено: 14:45, 01-09-2010 | #2

Название темы: Сканирование IP адресов