Board logo

标题: 批处理IP扫描器 [打印本页]

作者: PPdos     时间: 2007-2-16 10:07    标题: 批处理IP扫描器

网络课设置时 老出现IP冲突 于是就写了一个小程序 运行在别人机器上查看 经修改之后可以扫描不同网段 感谢redtek大虾的多线程思路 现给出源代码:
@echo off

if "%1"=="" goto PPdos
title Finished %s%/100
ping -w 1 -n 1 %1.%2>nul&&call :ananlyse %1.%2
exit

:PPdos
set /p ip=IP adresse (ex:192.168.1):
for /l %%i in (1 1 255) do (
		set /a s=%%i*100/255
		start /B %~s0 %ip% %%i
		if "%%i"=="120" ping 127.0>nul 
)
pause>nul

:ananlyse
for /f "tokens=3,9 delims==: " %%i in ('ping -n 1 -w 2 -a %1^|find "TTL"') do (
	echo.%%i	OK	TTL=%%j
)
加张截图: IPfinder2.bat 去除 find 提高速度降低 内存占用 更改如下
@echo off

if "%1"=="" goto PPdos
title Finished %s%/100
ping -w 1 -n 1 %1.%2 >nul&&call :ananlyse %1.%2
exit

:PPdos
set /p ip=IP adresse (ex:192.168.0):
for /l %%i in (1 1 255) do (
		set /a s=%%i*100/255
		start /B %~s0 %ip% %%i
		if "%%i"=="128" ping 127.0>nul
)
pause>nul

:ananlyse
for /f "tokens=12 delims==. " %%i in ('ping -w 1 -n 1 %1') do (
		if not "%%i"==" " echo.%1	OK	TTL=%%i
)
[ Last edited by PPdos on 2007-2-23 at 12:35 AM ]
附件 1: IPFinder.rar (2007-2-16 10:07, 391 bytes, 下载附件所需积分 1点 ,下载次数: 156)
附件 2: IPFinder2.rar (2007-2-23 13:36, 381 bytes, 下载附件所需积分 1点 ,下载次数: 124)

作者: PPdos     时间: 2007-2-16 10:50    标题: 仅扫描IP段的核心代码

@echo off
if "%1"=="" goto PPdos
ping -n 1 -w 1 %1.%2 >nul&&echo.%1.%2	OK
exit
:PPdos
set /p ip=Tapez IP (ex:192.168.1):
for /l %%i in (1 1 255) do (

		start /B %~s0 %ip% %%i
)

作者: gne3     时间: 2007-2-17 01:05
up

作者: yc421206     时间: 2007-2-19 13:35
Originally posted by PPdos at 2007-2-16 10:07: 网络课设置时 老出现IP冲突 于是就写了一个小程序 运行在别人机器上查看 经修改之后可以扫描不同网段 感谢redtek大虾的多线程思路 现给出源代码 ...
dear sir: 請問"start /B %~s0 %ip% %%i" 這句是什麼意思呢? 這整句我都不曉得在幹什麼用的 煩請為我解答,謝謝

作者: yc421206     时间: 2007-2-20 02:08
Originally posted by yc421206 at 2007-2-19 13:35: dear sir: 請問"start /B %~s0 %ip% %%i" 這句是什麼意思呢? 這整句我都不曉得在幹什麼用的 煩請為我解答,謝謝
小弟還是不明白此"%~s0",使用規格以及含意 如試著將它移除,程式即出錯,請問是為什麼呢??

作者: PPdos     时间: 2007-2-20 13:39    标题: 分析

这个程序很有意思 我想重新做下诠释,希望能让大家理解: @echo off if "%1"=="" goto PPdos ::注释:运行程序后 如果参数没有定义 则调用模块 PPdos ping -n 1 -w 1 %1.%2 >nul&&echo.%1.%2 OK ::注释:用一个数据包最多一秒延时的方法ping 参数1.参数2(即ip),成功就显示ok exit :PPdos set /p ip=Tapez IP (ex:192.168.1): ::注释:定义ip的前三位 for /l %%i in (1 1 255) do ( ::注释:ip第四位用for循环出来 start /B %~s0 %ip% %%i ::注释:此句很难理解 意思是在原dos窗口内调用自身,并把%ip%作为第一个参数, %%i作为第二个参数。%~s0为文件本身的短文件名避免调用自身时出错 )
~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到
[ Last edited by PPdos on 2008-4-2 at 07:33 AM ]

作者: yc421206     时间: 2007-2-21 13:55
Originally posted by yc421206 at 2007-2-20 02:08: 小弟還是不明白此"%~s0",使用規格以及含意 如試著將它移除,程式即出錯,請問是為什麼呢??
小弟瞭解了 感謝兄您的指導

作者: Kinglion     时间: 2007-2-21 20:57
写得不错,很实用!

作者: lzmyst     时间: 2007-2-21 23:52
学习了。 谢谢兄的共享。

作者: vkill     时间: 2007-2-23 00:14
不如直接 arp -a

作者: peterdocter     时间: 2007-3-1 01:35
这个我用cpu都占到快没有了!太占资源了吧?用了之后要终止都非常难,好像假死机一样!

作者: dato     时间: 2007-3-1 23:12
这段代码还是对机房来说还是非常实用的。 刚刚用arp -a显示的IP非常有限,ping这种方式又可能受到防火墙阻挡。 但通过LZ这段脚本批量ping过局域网再使用arp -a 方式就能比较准确的获得局域网中在线的IP 所以希望LZ结合一下arp 命令,

作者: PPdos     时间: 2007-3-4 05:19    标题: 回复

13楼的问题在内存不足或IP段内在线主机过多确会发生 所以要在运行此程序前关闭其他应用程序 (正常情况下几十秒钟即可完成扫描) 14楼建议的arp可以在扫描过后直接运行 arp -a 命令来完成更为灵活

作者: 574855721     时间: 2007-3-5 12:47
内网用的吗?作用是?

作者: zfkj     时间: 2007-3-5 18:18
呵呵,不错啊。支持

作者: yangjiang     时间: 2007-3-5 22:32
这个好象没有什么实用价值.

作者: wang8499     时间: 2007-3-5 23:11
学习了。 谢谢兄的共享。

作者: test266     时间: 2007-3-6 00:44    标题: 试试我的

@echo off setlocal ENABLEDELAYEDEXPANSION if not "%1"=="" goto seg set /p ip=请输入IP段(如:192.168.10): if "%ip%"=="" ( set ip=192.168.10 echo 未指定IP段,缺省使用!ip! ) arp -d for /L %%i in (1,1,26) do ( start /B %~s0 %%i ) if "%1"=="" goto done :seg for /l %%j in (1,1,10) do ( set /a k=%1*10-10+%%j ping -w 1 -n 1 !ip!.!k! >nul ) exit :done set /a wait=20 echo 等待%wait%秒,期待arp已经完成 call :GetHMS set /a t1 = h*60*60+m*60+s :loop call :GetHMS set /a t2 = h*60*60+m*60+s set /a tt = t3 set /a t3 = %t2%-%t1% if %tt% NEQ %t3% set /p=.<nul if %t3% LSS %wait% goto loop echo . echo 延时了 %t3% 秒 echo !ip!网段所有在线机器MAC为: for /f "tokens=1,2,3" %%i in ('arp -a') do ( if "%%k"=="dynamic" echo %%j,%%i ) :GetHMS if %time:~0,1% EQU 0 ( set /a h = %time:~1,1% ) else ( set /a h = %time:~0,2% ) if %time:~3,1% EQU 0 ( set /a m = %time:~4,1% ) else ( set /a m = %time:~3,2% ) if %time:~6,1% EQU 0 ( set /a s = %time:~7,1% ) else ( set /a s = %time:~6,2% )

作者: PPdos     时间: 2007-3-6 09:07    标题: 得到内网计算机的MAC地址

可在扫描完后 DOS窗口下运行以下命令:
@echo off&cls&for /f "skip=3 tokens=1,2 delims= " %i in ('arp -a') do echo IP=%i Mac=%j

作者: kkoper     时间: 2007-3-25 15:00
厉害啊~~ 佩服,

作者: zjren     时间: 2007-3-27 00:49    标题: 支持意下

支持意下

作者: kingstry     时间: 2007-3-29 09:28
这个我用cpu都占到快没有了!太占资源了吧?用了之后要终止都非常难,好像假死机一样! 同上

作者: host2318     时间: 2007-3-30 01:50
收藏了。谢谢

作者: xiaoyi2542     时间: 2007-4-15 06:25
非常不错!谢谢~

作者: xiamin223     时间: 2007-4-27 05:11
支持!顶一下!

作者: flandy     时间: 2007-4-29 06:09
支持

作者: hpwsb     时间: 2007-4-29 18:33
其实用mac扫描器还好用点,我个人以为

作者: PPdos     时间: 2008-4-2 07:42    标题: 针对MAC的那个问题

运行完ip扫描器核心代码后,直接输入19楼的命令,所有扫描到的内网ip的@mac都显示出来,我感觉更快些。
IP=192.168.1.1 Mac=00-12-ef-44-95-** IP=192.168.1.12 Mac=00-11-11-f1-**-f2 IP=192.168.1.15 Mac=00-11-11-f1-9a-** IP=192.168.1.25 Mac=00-11-11-f1-**-24 IP=192.168.1.55 Mac=00-19-d1-17-69-** IP=192.168.1.88 Mac=00-13-20-10-**-b3 IP=192.168.1.101 Mac=00-11-11-f1-8d-**
[ Last edited by PPdos on 2008-4-2 at 08:35 PM ]

作者: nnydkj     时间: 2008-4-4 21:01
在这里学到好多东西,谢谢~

作者: zhang123k68     时间: 2010-7-7 10:49
学习了,哈哈谢谢你,

作者: a22124497     时间: 2010-7-7 15:14
s顶一下

作者: houwenhui     时间: 2010-7-9 17:32
写的挺好的啊 支持

作者: sl543001     时间: 2010-7-9 18:00
俺有更好的代码,不知道有没有人需要.谁要M我

作者: sl543001     时间: 2010-7-9 18:05
有图有真相
附件 1: pingall.gif (2010-7-9 18:05, 12.8 K,下载次数: 1)



作者: fy2008zg     时间: 2010-7-10 17:24
服务器上可以乱用吗

作者: eheaven     时间: 2010-7-23 17:48
感谢楼主

作者: lmlz41     时间: 2010-10-29 15:21
收藏了!!

作者: 9096     时间: 2010-11-2 12:58
好的东西一定收

作者: z56490932     时间: 2010-11-14 02:57
不错啊。支持 谢谢兄的共享

作者: loveping08     时间: 2010-11-15 12:01
恩恩 我想我需要这个 好像下载还没那么多可以购买这个帖子 好 继续努力

作者: ling310521773     时间: 2010-11-15 23:13
很好用,谢了!

作者: yf6122010     时间: 2010-12-8 17:05
不错支持!

作者: ga861225     时间: 2010-12-11 10:33    标题: 恩恩

不错不错 正需要