Board logo

标题: [网络连接] 批处理如何实现ping指定域名或ip当响应时间大于指定数值时触发报警? [打印本页]

作者: keshun    时间: 2013-6-12 16:25     标题: 批处理如何实现ping指定域名或ip当响应时间大于指定数值时触发报警?

本帖最后由 pcl_test 于 2016-11-24 20:31 编辑

ping外网时,只要在ping过程中连续出现三个值大于设定值时调用声音报警,并把报警触发时间记录到a.txt,ping本身不退出,只是报警。
作者: CrLf    时间: 2013-6-12 17:55

楼主这么语焉不详,不给你完整代码,留个思路自己整吧,我也惜字如金
管道是单向的,所以要实现撸主的要求,得绕一下:
  1. @echo off
  2. start /b cmd /c ping /t xxx.xxx.xxx.xxx^>ping.log
  3. :loop
  4. for /f %%a in ('type ping.log') do (
  5.    你要进行的操作
  6. )
  7. goto loop
复制代码

作者: keshun    时间: 2013-6-12 19:25

本帖最后由 keshun 于 2013-6-12 19:26 编辑

回复 2# CrLf


    抱歉!!我文字描述不过祥细,见谅!!

感谢论坛巡查的答复,只是本人功低不足,代码添补多次都出错,还望进一步解答!

我是想对网速质量的进行监控,异常第一时间发现进行排查问题。

1。通过ping www.sina.com.cn -t,判断网速质量,新浪网站的正常ping是3-5ms,当ping值连续3个大于20ms时给予声音报警,这样可以提醒我关注异常时段分析问题。
2。把触发报警时间记录在a.txt,在我分析服务器记录数据时有时间依据。
3。报警声音只要能调用系统声音会响就行,最好不弹播放器窗口。
作者: 522235677    时间: 2013-6-12 22:16

  1. @echo off & title 网络高延迟报警Beta
  2. set t=15
  3. set ip=192.168.1.1
  4. set file=记录.txt
  5. set tee=^|cscript /nologo "%temp%\tee.vbs" ^>^>%file%
  6. echo 正在持续检测中...
  7. echo>"%temp%\tee.vbs" text = wscript.stdin.readall:wscript.echo text:wscript.stderr.write text
  8. :2
  9. for /f "tokens=3 delims==" %%a in ('ping %ip% -n 1') do (
  10. if not "%%a" GEQ "0" echo %date:~0,10% %time:~0,8% 网络异常%tee% & echo  & goto 2
  11. for /f "delims=m" %%b in ("%%a") do (if %%b GEQ %t% echo %date:~0,10% %time:~0,8% 延迟过大:%%bms%tee% & echo )
  12. ping 127.1 -n 2 >nul
  13. goto 2
  14. )
  15. echo %date:~0,10% %time:~0,8% 网络中断%tee% & echo  & goto 2
复制代码
以前写的,超过15秒,主板蜂鸣器就报警
作者: keshun    时间: 2013-6-13 14:29

回复 4# 522235677


    感谢!虽然跟我的预期效果有点出入,但也基本满足,感谢!!
作者: iabat    时间: 2013-12-24 10:34

回复 4# 522235677

看了受益良多,但有几句不太明白:
set tee=^|cscript /nologo "%temp%\tee.vbs" ^>^>%file%
echo 正在持续检测中...
echo>"%temp%\tee.vbs" text = wscript.stdin.readall:wscript.echo text:wscript.stderr.write text

这个所起的作用是??谢谢
作者: 522235677    时间: 2013-12-24 17:00

回复 6# iabat


    set tee=^|cscript /nologo "%temp%\tee.vbs" ^>^>%file%
echo 正在持续检测中...
echo>"%temp%\tee.vbs" text = wscript.stdin.readall:wscript.echo text:wscript.stderr.write text
这个是vbs代码,目的就是屏显的同时将内容写到文本中。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2