Компьютерный форум 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=211002)

root221 12-07-2011 10:00 1711703

Как быстро просканировать сеть
 
Нашел 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 1711724

если я правильно понял и задача лишь обновить 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 1711726

да именно так оно и есть...

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

Xaegr 12-07-2011 11:51 1711732

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

root221 12-07-2011 14:07 1711835

подскажите как переписать чтобы не открывалось много консольных окон

Код:

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 1711859

Цитата:

Цитата root221
переписать чтобы не открывалось много консольных окон »

только через вызов из 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 1711870

а как сделать чтобы только после выполнения этого скрипта через vbs продолжал выполняться мой скрипт

amel27 12-07-2011 15:14 1711883

Цитата:

Цитата root221
сделать чтобы только после выполнения этого скрипта через 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 1711889

Огромное спасибо тебе, как самому активному и быстро реагирующему спецу))

Iska 12-07-2011 18:45 1711988

Цитата:

Цитата root221
сделать както проверку если этот файл доступен то продолжение скрипта приостанавливается как только скрипт неможет найти скрипт vbs из папки темп тогда только он продолжал выполнять тот самый скрипт который вы мне написали для arp -a »

Спецу будет гораздо легче, если Вы начнёте использовать знаки препинания.

root221 13-07-2011 05:21 1712228

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

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

Iska 13-07-2011 21:02 1712707

root221, это было никоим образом не замечание, а просьба (ибо никто меня соответствующими полномочиями не наделял).


Время: 00:08.

Время: 00:08.
© OSzone.net 2001-