自动Ping脚本的编写要点
来源:互联网 发布:淘宝联盟平台电脑版 编辑:程序博客网 时间:2024/05/29 17:30
因为工作关系,最近需要每天对干线网络进行连通性及时延测试,执行大量的ping命令,还要记住大量的IP地址。
于是设计了一个NetTest.cmd命令行脚本。
主要过程及代码如下:
第一步:获取本机地址。
代码如下
::获取本机的IP地址
@if exist %TEMPFILE% del %TEMPFILE%
@ipconfig | find "IP Address" > %TEMPFILE%
:: 判断是否生成了有效的%TEMPFILE%文件
@CALL :SubGetFileSize %TEMPFILE%
@if %FileSize% LEQ 10 (
@ECHO 网线没有连接或者交换机没有开机,不能进行测试。
@goto ExitPing
)
::
::@for /F "skip=7 tokens=15,*" %%I in (%TEMPFILE%) do (
@for /F "tokens=15,*" %%I in (%TEMPFILE%) do (
@set LocalAddr=%%I
@goto :GetAddrRouterFlag
)
::@ECHO LocalAddr=%LocalAddr%
第二步:进行本机地址识别
::识别地址集
:GetAddrRouterFlag
@for /F "delims=. tokens=1" %%I in ("%LocalAddr%") do (
@set /A AddrHead=%%I
@set /A AddrRouterFlag=%%I/64
@goto :StartTest
)
:StartTest
@if %AddrRouterFlag% EQU 0 goto :StartR1Test
@if %AddrRouterFlag% EQU 1 goto :StartR2Test
@if %AddrRouterFlag% EQU 2 goto :StartR3Test
@if %AddrRouterFlag% EQU 3 goto :StartR4Test
@if %AddrRouterFlag% EQU 4 goto :StartR5Test
@goto :ExitPing
第三步:处理对目标地址集的测试
:StartR1Test
@ECHO 启动到所有站点的主用路由网络连通性测试...
::Center1(1.x.x.x)
@if NOT %AddrHead% EQU 1 start cmd.exe /K "title [router1-到Center01核心交换机WAN接口-11.132.10.20]&& echo 开始测试时间%TIME% && ping 1.32.0.20 %PINGOPTIONS%"
......
@goto :ExitPing
:StartR2Test
@ECHO 启动到所有站点的备用路由2网络连通性测试...
::Center1(65.x.x.x)
@if NOT %AddrHead% EQU 65 start cmd.exe /K "title [router2-到Center01接入交换机UPLink接口-65.132.10.20]&& echo 开始测试时间%TIME% && ping 65.132.10.20 %PINGOPTIONS%"
......
@goto ExitPing
....................................
:: *********************************************************************************
:: 子过程01 - GetFileSize
:: SubGetFileSize <<<
:SubGetFileSize
@set /A FileSize=%~z1
::@ECHO 文件%~nx1的大小为%FileSize%字节。
@goto :EOF
:: >>> SubGetFileSize
:ExitPing
@ECHO.
@PAUSE
@ECHO ON && endlocal
其中,脚本内函数为
:: 子过程01 - GetFileSize
:: SubGetFileSize <<<
:SubGetFileSize
@set /A FileSize=%~z1
::@ECHO 文件%~nx1的大小为%FileSize%字节。
@goto :EOF
:: >>> SubGetFileSize
重点代码分析
start cmd.exe /K "title [router1-到Center01核心交换机WAN接口-11.132.10.20]&& echo 开始测试时间%TIME% && ping 11.132.10.20 %PINGOPTIONS%"
该语句包含start->cmd->title/echo/ping三层调用关系。其中start用来启动新的控制台窗口Win;cmd /k用来保证Win窗口在按Ctrl+C结束脚本后保持在当前窗口中,并解释执行后面的命令;title/echo/ping是依次执行的三个命令,分别设置Win窗口的标题,显示测试开始时间,进行ping测试。
特别要注意的是,
第一:title后面的[]括起来的是Win窗口的标题,而外部的“”括起来的是cmd要执行的脚本,这里是嵌套的脚本。
第二:start 可以带窗口title启动新的命令提示符窗口,但新窗口将自动采用windows官方默认的属性设置(高度、宽度、颜色等),所以,这里必须是在cmd中进行窗口title的设置。
*********************************
在下一篇《一键式Ping脚本 》中给出了一个完整的例子。
- 自动Ping脚本的编写要点
- linux 自动ping ip的shell脚本
- BAT脚本编写要点
- bat脚本编写要点
- Oracle 自动启动脚本的编写
- 为JenKins编写的自动打包脚本
- ping的批处理文件编写
- ping主机的脚本
- shell 编写脚本批量ping ip
- 测试要点的编写
- 代码编写的要点
- 脚本自动ping检测网络情况
- 编写自己的PING工具
- 编写自动备份bat脚本
- 编写自动备份bat脚本
- 转载:用Python编写自动下载网络小说的脚本
- 【shell编程】 数据自动备份脚本的编写
- 用Python编写IOS工程的自动编译脚本
- qt获取本机ip,本地ip,qhostaddress qnetworkinterface
- HTTP中Get与Post的区别
- window.open()的所有参数列表
- vc编程 Email乱码问题的解决
- 点击按钮打开 输入的链接
- 自动Ping脚本的编写要点
- 取石子问题
- Android开发环境配置简介
- 多核时代:并行程序设计探讨(8)——任务分解模式Task Decomposition
- JS展开菜单+ —类似windows资源管理器一次只能展开一个
- Hibernate中二级缓存的配置和使用
- 关于javascript 匿名函数的调用方式
- GEP程序(C#语言描述)分析(二)
- 通信相关