PDA

Показать полную графическую версию : [решено] Как быстро просканировать сеть


root221
12-07-2011, 10:00
Нашел bat скрипт который сканирует сеть, хочу узнать, как ускорить процесс в несколько раз.



@echo off
rem 13.08.2008

if `%1`==`_` (GoTo L%2) else (
if `%1`==`` (set Base=10.10.127) 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.txt
)
GoTo End

:L1
ping -a -w 1 -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

amel27
12-07-2011, 11:44
если я правильно понял и задача лишь обновить ARP кэш:
for /l %%a in (1,1,254) do start "" /MIN ping -w 100 -n 1 10.0.0.%%a

root221
12-07-2011, 11:50
да именно так оно и есть...

только окон открывается столько что мама негорюй, после запуска этого скрипта

Xaegr
12-07-2011, 11:51
Задачка показалась интересной, так что минус час, плюс многопоточный сканер сети на PowerShell :)
http://xaegr.wordpress.com/2011/07/12/threadping/

root221
12-07-2011, 14:07
подскажите как переписать чтобы не открывалось много консольных окон

for /l %%a in (1,1,254) do start "" /MIN ping -w 100 -n 1 10.0.0.%%a

amel27
12-07-2011, 14:39
переписать чтобы не открывалось много консольных окон »только через вызов из CMD дополнительного VBS:
(for /l %%a in (1,1,254) do @Echo CreateObject^("WScript.Shell"^).Run "ping -w 100 -n 1 10.0.0.%%a",0
)>"%TEMP%\%~n0.vbs"
start "" wscript /Nologo "%TEMP%\%~n0.vbs"

root221
12-07-2011, 15:03
а как сделать чтобы только после выполнения этого скрипта через vbs продолжал выполняться мой скрипт

amel27
12-07-2011, 15:14
сделать чтобы только после выполнения этого скрипта через vbs продолжал выполняться мой скрипт »@echo off
(for /l %%a in (1,1,254) do Echo CreateObject^("WScript.Shell"^).Run "ping -w 100 -n 1 10.0.0.%%a",0
Echo WScript.Sleep^(3000^))>"%TEMP%\%~n0.vbs"
cscript /Nologo "%TEMP%\%~n0.vbs"
del "%TEMP%\%~n0.vbs"

root221
12-07-2011, 15:29
Огромное спасибо тебе, как самому активному и быстро реагирующему спецу))

Iska
12-07-2011, 18:45
сделать както проверку если этот файл доступен то продолжение скрипта приостанавливается как только скрипт неможет найти скрипт vbs из папки темп тогда только он продолжал выполнять тот самый скрипт который вы мне написали для arp -a »
Спецу будет гораздо легче, если Вы начнёте использовать знаки препинания.

root221
13-07-2011, 05:21
Iska, у меня кнопки отвалились, там где знаки припинания :dont-know

Спасибо за замечание, обязательно постараюсь писать со знаками припинания.

Iska
13-07-2011, 21:02
root221, это было никоим образом не замечание, а просьба (ибо никто меня соответствующими полномочиями не наделял).




© OSzone.net 2001-2012