免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8088 | 回复: 9
打印 上一主题 下一主题

[数值计算] 如何通过shell获取ping的结果时延平均值? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-08 16:24 |只看该作者 |倒序浏览
  
  如何通过脚本实现,“ 测试ping IP地址为:192.168.10.11的时延,通过发送1000Byte大小的ping包测试,每次测试发30个包,测试10次,取时延平均值。”

我现在只能获一次的平均值,不过速度有些慢,有没有快一点的方法呢!我知道每次ping完,会有rrt返回时间结果值,但是不知道如何利用上。

#!/bin/bash
ping 192.168.10.11 -s 1000 -c 30 | awk -F'=' '/time=/ {n++; sum+=$NF+0 } END{print sum/n}'


本人是个新手,刚开始学习,望高手们多多指教!谢谢……

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
2 [报告]
发表于 2013-07-08 16:28 |只看该作者
本帖最后由 dn833 于 2013-07-08 16:29 编辑
  1. ping 192.168.11.10 -s 1000 -c 30 |awk -F / 'END{print $5}'
复制代码
如果你想快一点,那就减少-c后的数字

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-16 06:20:00
3 [报告]
发表于 2013-07-08 16:35 |只看该作者
直接把这行
  1. rtt min/avg/max/mdev = 0.023/0.049/0.060/0.009 ms
复制代码
的0.049取出来不就好了么?

论坛徽章:
0
4 [报告]
发表于 2013-07-08 16:41 |只看该作者
回复 3# nathanielwen
关键是要运行10次,计算平均值!

   

论坛徽章:
0
5 [报告]
发表于 2013-07-08 16:42 |只看该作者
回复 2# dn833

恩!非常感谢。如何取平均值,有提示么?


   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
6 [报告]
发表于 2013-07-08 16:53 |只看该作者
本帖最后由 关阴月飞 于 2013-07-08 17:09 编辑

[code]#!/bin/bash
for i in `seq 10`
do
       a=`ping 192.168.11.10 -s 1000 -c 30 |awk -F / 'END{print $5}'`
       n=`echo $a $n |awk '{print $1+$2}'`
done

echo $n |awk '{print $0/10}'

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-16 06:20:00
7 [报告]
发表于 2013-07-08 18:34 |只看该作者
for循环10次应该就好了啊?每次把对应字段提取出来,求和取平均

回复 4# Tao282515641
  1. #!/bin/bash

  2. tmp=0
  3. sum=0
  4. for((i=0;i<10;i++))
  5. {
  6.         tmp=$(ping 127.0.0.1 -c 4 | sed -n 's/.* = .*\/\(.*\)\/.*/\1/p')
  7.         sum=$(echo "$tmp+$sum"|bc)
  8.         echo $sum
  9. }

  10. avg=$(echo "scale=4;$sum/10.000"|bc)
  11. echo "avg=$avg"
复制代码

论坛徽章:
0
8 [报告]
发表于 2013-07-08 19:31 |只看该作者
回复 6# 关阴月飞


    非常感谢!

论坛徽章:
0
9 [报告]
发表于 2013-07-09 09:16 |只看该作者
ping  www.baidu.com  -s 1000 -c 10 | awk -F"[= ]*"   '/from/{sum+=$(NF-1);}END{print sum/10;}'


不知道是不是你要的      

论坛徽章:
0
10 [报告]
发表于 2013-07-11 19:45 |只看该作者
回复 9# yinwei2012

谢谢热心帮助!


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP