标题: [网络连接] [已解决]批处理如何根据MAC查找局域网内网卡在线情况? [打印本页]
作者: mxxcgzxxx 时间: 2013-2-17 20:15 标题: [已解决]批处理如何根据MAC查找局域网内网卡在线情况?
本帖最后由 mxxcgzxxx 于 2013-2-19 18:39 编辑
使用什么命令行命令可以通过MAC地址定向查找局域网内的网卡是否在线
第三方软件如果能做到也行,
作者: group 时间: 2013-2-18 03:33
本帖最后由 group 于 2013-2-18 03:34 编辑
- @echo off
- (for /l %%a in (0 1 255) do start /b ping /n 1 192.168.0.%%a)
- arp -a|find /i "网卡地址"
- pause
复制代码
作者: mxxcgzxxx 时间: 2013-2-18 13:52
本帖最后由 mxxcgzxxx 于 2013-2-18 13:54 编辑
这个我想过,但太耗时了,从1到255,ping完就花了很长时间了,如果要反复拼一直到拼通为止,来检测对方是否开机,那不知要多少时间。有没有办法不走IP路线,只单一侦查MAC是否在线的办法
或者可以跳过不在线的IP,也可以省不少时间
作者: BAT-VBS 时间: 2013-2-18 23:07
回复 3# mxxcgzxxx
2楼代码花了多长时间?
作者: group 时间: 2013-2-19 03:07
回复 3# mxxcgzxxx
网络上,我们知道的只是一个相对的门牌号(ip),要知道门里面主人的名字(mac)只能先逐户敲开问一问,所以查某个门牌号是很容易的,查某人住哪家是很麻烦的
作者: mxxcgzxxx 时间: 2013-2-19 15:46
回复 4# BAT-VBS
在网内只有两个有效IP的情况下检索一遍要近19分钟,如果有效在线IP越多时间就越少,问题在于如果IP是自分配而在线机数量又不明的情况下时间就长短不一了。
尝试了一下,就以我的机子来说
不在线的平均时间为:4.42~4.5秒/次 255次约要18分钟
在线的时间为:0.08~0.17秒/次 255次约要30秒
所以差别还是很大的。
回复 5# group
如你所说
另一种方案就只有规定时间了,在规定时间内强行关闭命令执行下一步,在关闭前PING通的则有返回值,按我的机子也就是说在0.2秒后关闭,总时间就可以减缩到51秒左右
作者: mxxcgzxxx 时间: 2013-2-19 18:38
本帖最后由 mxxcgzxxx 于 2013-2-19 18:41 编辑
绕了那么多弯弯才发现原来PING命令的-w参数就可以完美解决了- for /l %%a in (0,1,254) do ( ping -n 1 -w 1 10.150.10.%%a ) >nul
- arp -a|find /i "网卡地址"
复制代码
PING完花了2分钟,如果中途判断就可以更省时了
作者: mxxcgzxxx 时间: 2013-2-19 21:07
本帖最后由 mxxcgzxxx 于 2013-2-19 21:38 编辑
发现不可以使用arp命令,如果在线时检过了,对方关机后arp中数据依然存在,所以没有检测对方是否在线的意义
但用nbtstat加findstr在循环中太慢,权衡了一下调整如下- @ECHO OFF
- set "ip=10.150.10."
- set "mac=00-E0-4C-89-A5-AF"
- set n=0
- :1
- ping -n 1 -w 1 %ip%%n% >nul || goto :2
- nbtstat -a 10.150.10.%n% | findstr " %mac% " >nul || goto :2
- goto :3
-
- :2
- set /a n+=1
- if %n%==255 echo 不在线 &pause &goto :eof
- goto :1
-
- :3
- ::获取信息
- for /f "tokens=1,2,3 delims== " %%1 in ('nbtstat -a %ip%%n% ^| findstr " <00> "') do (
- if "%%3"=="UNIQUE" set "m=%%1"
- if "%%3"=="GROUP" set "g=%%1"
- )
- echo IP 计算机名 工作组
- echo %ip%%n% %m% %g%
- PAUSE
复制代码
实测网内只存在2个有效IP情况下
对方在101 时时间1分钟左右
对方在251时时间2分半左右
需要注意的是:
arp使用的是小写MAC
nbtstat使用的是大写MAC
作者: group 时间: 2013-2-19 22:19
回复 8# mxxcgzxxx
arp -d可以删除原有记忆,这样就不容易受干扰了
作者: mxxcgzxxx 时间: 2013-2-20 13:34
回复 9# group
学习了多谢指导
确实nbtstat虽然返回数据多些,但实测中发现如果对方是无线接入又无用计算机名称的情况下(手机最常见)会检测不到
而arp则可以,因为它只要两个关键数据IP和MAC就行
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |