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 KiB,下载次数: 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    标题: 恩恩
不错不错 正需要