标题: [网络连接] [已解决]批处理如何通过ping命令来确认局域网某个网段中的故障机器? [打印本页]
作者: yongtianjian 时间: 2015-7-11 11:45 标题: [已解决]批处理如何通过ping命令来确认局域网某个网段中的故障机器?
如题,假设网段10.7.1.1-10.7.1.254 有254个设备接在多个交换机上、
想通过批处理的方式,依次遍历,并返回超时或者无法ping通的机器的信息,汇总到 D:\123.txt
作者: flyinnet9 时间: 2015-7-11 11:57
本帖最后由 flyinnet9 于 2015-7-11 18:28 编辑
- @echo off
- chcp 437
- setlocal enabledelayedexpansion
- for /l %%a in (1,1,254) do (
- ping 10.7.1.%%a >pinglog.txt
- For /f "skip=2 tokens=4 delims=: " %%i In ('find "statistics" pinglog.txt') Do set IP=%%i
- For /f "skip=2 tokens=4,7,11 delims=,( " %%j In ('find "Lost" pinglog.txt') Do set Sent=%%j&set Received=%%k&set Lost=%%l
- For /f "skip=2 tokens=3,6,9 delims=, " %%m In ('find "Average" pinglog.txt') Do set Minimum=%%m&set Maximum=%%n&set Average=%%o
- For /f "tokens=3" %%y in ('find /c "Request timed out" pinglog.txt') do set Count=%%y
- if !Count! neq 0 echo TIME OUT IPAddress=!IP! Sent=!Sent! Received=!Received! Lost=!Lost! Minimum=!Minimum! Maximum=!Maximum! Average=!Average>>d:\123.txt
- findstr /c:"Destination host unreachable" pinglog.txt && echo Unreachable IPAddress=!IP! Sent=!Sent! Received=!Received! Lost=!Lost!>>d:\123.txt
- )
- del /q pinglog.txt
复制代码
作者: /zhqsystem/zhq 时间: 2015-7-12 00:59
- @echo off
- for /l %%i in (1,1,254) do (
- ping "10.7.1.%%i"|findstr "无法访问目标主机 如果是非中文系统语言自行转换">nul&&echo=网络异常IP:10.7.1.%%i
- )
- pause
复制代码
作者: yongtianjian 时间: 2015-7-13 07:49
回复 2# flyinnet9
亲,这个程序走到一半,会一直卡住啊,没有跳转的
作者: yongtianjian 时间: 2015-7-13 08:05
回复 3# /zhqsystem/zhq
您的代码没有执行。。。。
作者: flyinnet9 时间: 2015-7-13 13:07
本帖最后由 flyinnet9 于 2015-7-13 13:08 编辑
回复 4# yongtianjian
测试没问题,在192.168.1段测了5个IP,结果如下
TIME OUT IPAddress=192.168.1.1 Sent=4 Received=3 Lost=25% Minimum=218ms Maximum=1270ms Average=842ms
Unreachable IPAddress=192.168.1.4 Sent=4 Received=4 Lost=0%
Unreachable IPAddress=192.168.1.5 Sent=4 Received=4 Lost=0%
你截屏吧第一行加rem,然后执行截屏看看
作者: kingshui 时间: 2015-7-13 15:02
本帖最后由 kingshui 于 2015-7-13 15:04 编辑
其实ping的命令写多几个参数的话速度会快很多。
另外 find “TTL” 这样来判断的话中英文系统通用。
如:- for /l %%i in (1,1,254) do ping -n 1 -l 1 -f -w 1 -4 110.7.1.%%i|find "TTL">nul || echo 110.7.1.%%i 网络故障>>error.txt
复制代码
作者: /zhqsystem/zhq 时间: 2015-7-13 22:11
回复 5# yongtianjian
7楼的代码很好,用他的吧
我的那个代码没有太大问题,没有删除搜索内说明信息,没有加入"返回超时"但是判断丢包的话就很难判断了
如果实在太多可以编写两个一个递增一个递减这样会比之前快很多,如果还觉得慢就编写255个一键调用(如果电脑垃圾别这么弄)
作者: ygqiang 时间: 2015-7-14 07:56
其实ping的命令写多几个参数的话速度会快很多。
另外 find “TTL” 这样来判断的话中英文系统通用。
如:
kingshui 发表于 2015-7-13 15:02
多谢。。。如果换成在线机器检测。。。
这个代码应该如何修改?
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |