今天晚上机房互联网出口的运营商做大规模网络割接,说是只会闪断两次,但是对他们还是不放心,也没精力一直守着看网络状态。
想着从外面租用的服务器用ping来监控闪断次数和持续时间,结果那破服务器装个xshell都卡成狗了~cmd的ping又默认不带时间戳,怎么办~
于是找了一段脚本,用来给windows cmd的ping加上时间戳,以便割接结束后核对具体的闪断情况。
首先创建一个pingtime.vbs文件,代码如下:
Dim args, flag, unsuccOut args="" otherout="" flag=0 If WScript.Arguments.count = 0 Then WScript.Echo "Usage: cscript tping.vbs [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]" WScript.Echo " [-s count] [[-j host-list] | [-k host-list]]" WScript.Echo " [-r count] [-w timeout] destination-list" wscript.quit End if For i=0 to WScript.Arguments.count - 1 args=args & " " & WScript.Arguments(i) Next Set shell = WScript.CreateObject("WScript.Shell") Set re=New RegExp re.Pattern="^Reply|^Request|^来自|^请求" Set myping=shell.Exec("ping" & args) while Not myping.StdOut.AtEndOfStream strLine=myping.StdOut.ReadLine() 'WScript.Echo "原数据" & chr(9) & strLine r=re.Test(strLine) If r Then WScript.Echo date & " "& time & chr(9) & strLine flag=1 Else unsuccOut=unsuccOut & strLine End if Wend if flag = 0 then WScript.Echo unsuccOut end if
把pingtime.vbs放到c盘根目录,然后在cmd中进入到c:运行以下命令:
cscript ping.vbs x.x.x.x -t >ping20190528.txt
参数说明:
-t 一直ping
>ping20190528.txt 把ping的结果以txt文本的形式保存到当前目录下
如果需要指定ping包的大小和超时设置可以使用下面的参数
-l 封包大小
-w 超时时间
例如:
cscript ping.vbs x.x.x.x -t -l 1000 -w 5000 >ping20190528.txt
注意cmd命令行窗口需要用管理员权限打开,win10直接在命令行工具上右键选择管理员权限打开,win2003右键运行方式,并将“以受限制的访问运行此程序”选项取消。
测试结果,割接第一次闪断丢了3个包,还好还好~