一键式Ping脚本

作为《自动Ping脚本的编写要点》一文 的补充,这里给出了一个完整的实例,用来演示各种技术的集成。

@ECHO    ***************************************************************************
@ECHO    ***                                                                     ***
@ECHO    ***  脚本名称:                                                         ***
@ECHO    ***      一键式广域网连通性测试程序                                     ***
@ECHO    ***                                                                     ***
@ECHO    ***  脚本功能:                                                         ***
@ECHO    ***      自动打开多个命名窗口,并对网络进行连通性测试和性能测试          ***
@ECHO    ***                                                                     ***
@ECHO    ***  当前版本:                                                         ***
@ECHO    ***    PingAll version 0.9b                                             ***
@ECHO    ***                                                                     ***
@ECHO    ***  作者:                                                             ***
@ECHO    ***        svnLight                                                     ***
@ECHO    ***                                                                     ***
@ECHO    ***  创建日期:2009年09月12日                                           ***
@ECHO    ***    初始版本0.9                                                      ***
@ECHO    ***                                                                     ***
@ECHO    ***  版本更新纪录                                                       ***
@ECHO    ***    2009-09-14 0.9a                                                  ***
@ECHO    ***    2009-09-16 0.9b                                                  ***
@ECHO    ***                                                                     ***
@ECHO    ***  0.9版本功能列表                                                    ***
@ECHO    ***    1. 自动识别网卡IP地址,支持多网卡                                 ***
@ECHO    ***    2. 支持两种测试模式                                              ***
@ECHO    ***       (1) PingAll                                                   ***
@ECHO    ***           相当于进行[ping ip -t]测试                                ***
@ECHO    ***       (2) PingAll times                                             ***
@ECHO    ***           相当于进行[ping ip -n times]测试                          ***
@ECHO    ***       两种测试模式下,按Ctrl+C后停留在各自的命令行窗口中             ***
@ECHO    ***    3. 区分FirstPath和SecondPath,仅对可达路由进行测试                       ***
@ECHO    ***    4. 自动识别所处站点,仅对外部站点进行测试                         ***
@ECHO    ***    5. 窗口标题栏提示目标地址                                        ***
@ECHO    ***  0.9a版本功能改进                                                   ***
@ECHO    ***    1. 新建控制台窗口使用定制后的控制台默认属性,缓冲命令行数等      ***
@ECHO    ***    2. 提示开始测试时间                                              ***
@ECHO    ***                                                                     ***
@ECHO    ***  0.9b版本功能改进                                                   ***
@ECHO    ***    1. 横向平铺所有桌面窗口和设定前景色                              ***
@ECHO    ***    2. 用字符颜色区分到不同站点的ping包结果                          ***
@ECHO    ***                                                                     ***
@ECHO    ***  网络经验                                                           ***
@ECHO    ***    1. Ping交换机VLAN地址比Ping机器慢,而且延时抖动大很多             ***
@ECHO    ***         Ping机器            抖动范围 ^< 3ms                          ***
@ECHO    ***         Ping交换机VLAN地址  抖动范围 一般10ms以上,最大可达400-500ms ***
@ECHO    ***                                                                     ***
@ECHO    ***************************************************************************
::
:: *********************************************************************************
:: 主程序
:: MainProcess <<<
::
@ECHO OFF && setlocal
@COLOR 03
@set TEMPFILE=temp.txt
@set TEMPWSHF=temp.vbs
::@SET FONTCOLOR=a
@set PINGOPTIONS=-t
@if not "%1" == "" set PINGOPTIONS=-n %1

::获取本机的IP地址
@if exist %TEMPFILE% del %TEMPFILE%
@ipconfig | find "IP Address" > %TEMPFILE%
:: 判断是否生成了有效的%TEMPFILE%文件
@CALL :SubGetFileSize %TEMPFILE%
@if %FileSize% LEQ 10 (
    @ECHO 网线没有连接或者交换机没有开机,不能进行测试。
 @goto ExitPing
)
::获取本机的IP地址
::@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%

::识别路由 - MainPath or SecondPath
: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 :Start1stTest
@if  %AddrRouterFlag% EQU 1 goto :StartSndTest
@if  %AddrRouterFlag% EQU 2 goto :StartSndTest
@if  %AddrRouterFlag% EQU 3 goto :StartSndTest
@if  %AddrRouterFlag% EQU 4 goto :StartSndTest
@goto :ExitPing

:Start1stTest
@ECHO 启动到所有站点的MainPath网络连通性测试...

:DFZX_1.x.x.x_
  @SET FONTCOLOR=a
  @if %AddrHead% EQU 1 GOTO :ZKZX_11.x.x.x_
  @start cmd.exe /K "title [MainPath-到DFZX-CSW广域网接口-1.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 1.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到DFZX-ASW的VLAN10上连网关-1.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 1.33.11.1 %PINGOPTIONS%"
  @start cmd.exe /K "title [MainPath-到DFZX-ASW上的PC-1.33.11.166]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 1.33.11.166 %PINGOPTIONS%"

:ZKZX_11.x.x.x_
  @SET FONTCOLOR=a
  @if %AddrHead% EQU 11 GOTO :RWFXZX_13.x.x.x_
  @if %AddrHead% GTR 11 SET FONTCOLOR=b
  @start cmd.exe /K "title [MainPath-到ZKZX-CSW广域网接口-11.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 11.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到ZKZX-ASW1的VLAN10上连网关-11.33.19.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 11.33.19.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到ZKZX-ASW2的VLAN10上连网关-11.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 11.33.11.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到ZKZX-ASW3的VLAN10上连网关-11.34.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 11.34.11.1 %PINGOPTIONS%"

:RWFXZX_13.x.x.x_
  @SET FONTCOLOR=b
  @if %AddrHead% EQU 13 GOTO :KELZX_29.x.x.x_
  @if %AddrHead% GTR 13 SET FONTCOLOR=6
  @start cmd.exe /K "title [MainPath-到FXZX-CSW广域网接口-13.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 13.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到FXZX-ASW的VLAN10上连网关-13.34.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 13.34.11.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到FXZX-ASW的VLAN20上连网关-13.34.19.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 13.34.19.1 %PINGOPTIONS%"

:KELZX_29.x.x.x_
  @SET FONTCOLOR=6
  @if %AddrHead% EQU 29 GOTO Stop1stTest
  @if %AddrHead% GTR 29 SET FONTCOLOR=e
  @start cmd.exe /K "title [MainPath-到KELZX-CSW1广域网接口-29.32.0.30]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.32.0.30 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到KELZX-CSW2广域网接口-29.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到KELZX-ASW1的VLAN1002上连网关-29.32.7.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.32.7.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到KELZX-ASW2的VLAN1005上连网关-29.32.8.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.32.8.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [MainPath-到KELZX-ASW3的VLAN10上连网关-29.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.33.11.1 %PINGOPTIONS%"
  @start cmd.exe /K "title [MainPath-到KELZX-ASW3上的PC-29.33.11.166]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 29.33.11.166 %PINGOPTIONS%"

:Stop1stTest
@goto :ExitPing

:StartSndTest
@ECHO 启动到所有站点的SecondPath网络连通性测试...

:DFZX_165.x.x.x_
  @if %AddrHead% EQU 65 GOTO :ZKZX_175.x.x.x_
  @SET FONTCOLOR=a
  @start cmd.exe /K "title [SecondPath-到DFZX-ASW广域网接口-165.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 165.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到DFZX-ASW的VLAN20上连网关-165.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 165.33.11.1 %PINGOPTIONS%"
  @start cmd.exe /K "title [SecondPath-到DFZX-ASW上的PC-165.33.11.166]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 165.33.11.166 %PINGOPTIONS%"
  @start cmd.exe /K "title [SecondPath-到DFZX图像服务器-165.33.11.64]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 165.33.11.64 %PINGOPTIONS%"

:ZKZX_175.x.x.x_
  @SET FONTCOLOR=a
  @if %AddrHead% EQU 75 GOTO :KELZX_193.x.x.x_
  @if %AddrHead% GTR 75 SET FONTCOLOR=b
  @start cmd.exe /K "title [SecondPath-到ZKZX-CSW广域网接口-175.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 175.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到ZKZX-ASW1的VLAN20上连网关-175.33.19.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 175.33.19.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到ZKZX-ASW2的VLAN20上连网关-175.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 175.33.11.1 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到ZKZX-ASW3的VLAN20上连网关-175.34.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 175.34.11.1 %PINGOPTIONS%"

:KELZX_193.x.x.x_
  @SET FONTCOLOR=b
  @if %AddrHead% EQU 93 GOTO :StopSndTest
  @if %AddrHead% GTR 93 SET FONTCOLOR=e
  @start cmd.exe /K "title [SecondPath-到KELZX-CSW1广域网接口-193.64.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.64.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到KELZX-CSW2广域网接口-193.32.0.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.32.0.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到KELZX-ASW1的VLAN1001上连网关-193.64.7.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.64.7.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到KELZX-ASW2的VLAN1004上连网关-193.64.8.20]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.64.8.20 %PINGOPTIONS%"
::@start cmd.exe /K "title [SecondPath-到KELZX-ASW3的VLAN20上连网关-99.33.11.1]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 199.33.11.1 %PINGOPTIONS%"
  @start cmd.exe /K "title [SecondPath-到KELZX-ASW3上的PC-193.33.11.166]&& color 0%FONTCOLOR% && echo 开始测试时间%TIME% && ping 193.33.11.166 %PINGOPTIONS%"

:StopSndTest
@goto ExitPing

:: *********************************************************************************
:: 子过程01 - GetFileSize
:: SubGetFileSize <<<
:SubGetFileSize
@set /A FileSize=%~z1
::@ECHO 文件%~nx1的大小为%FileSize%字节。
@goto :EOF
:: >>> SubGetFileSize

:ExitPing
@ECHO.
::横向平铺各控制台窗口
@ECHO dim objShell > %TEMPWSHF%
@ECHO Wscript.Sleep 500 >> %TEMPWSHF%
@ECHO.       >> %TEMPWSHF%
@ECHO set objShell = CreateObject("Shell.Application") >> %TEMPWSHF%
@ECHO objShell.TileVertically >> %TEMPWSHF%
@ECHO. >> %TEMPWSHF%
@ECHO set objShell = nothing >> %TEMPWSHF%
@ECHO. >> %TEMPWSHF%
@cscript  //B %TEMPWSHF%
@PAUSE 按任意键关闭本窗口...
@ECHO ON && endlocal

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值