与目标网络的网络状态测试

描述

前两天有人问我.有没有测试与一个服务器之间的 连接状态的函数....

emmm,这个么当然没有.服务器

众所周知.测试与服务器之间的链接状态,通常都是使用 ping命令,所以,我们测试与目标网络的连接状态,理所当然的使用ping来实现.ping个十次八次的然后拿到他的 最大值/最小值/平均值/平均偏差,通过这些数值去判断与服务器之间的连接状态是否稳定.

例如:

ping -c 10 www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121: icmp_seq=1 ttl=53 time=6.82 ms
64 bytes from 61.135.169.121: icmp_seq=2 ttl=53 time=6.23 ms
64 bytes from 61.135.169.121: icmp_seq=3 ttl=53 time=7.28 ms
64 bytes from 61.135.169.121: icmp_seq=4 ttl=53 time=103 ms
64 bytes from 61.135.169.121: icmp_seq=5 ttl=53 time=96.0 ms
64 bytes from 61.135.169.121: icmp_seq=6 ttl=53 time=11.1 ms
64 bytes from 61.135.169.121: icmp_seq=7 ttl=53 time=11.1 ms
64 bytes from 61.135.169.121: icmp_seq=8 ttl=53 time=7.74 ms
64 bytes from 61.135.169.121: icmp_seq=9 ttl=53 time=10.9 ms
64 bytes from 61.135.169.121: icmp_seq=10 ttl=53 time=12.0 ms


--- www.a.shifen.com ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9014ms
rtt min/avg/max/mdev = 6.236/27.247/103.125/36.251 ms

那我们ping10次百度,然后查看返回的结果 第16行 rtt开头的那部分

min:最小值

avg:平均值

max:最大值

mdev:平均偏差值

一般看mdev这个值,这个值越小,说明你与目标服务器的连接状态越稳定,如果越大,则说明越不稳定.

至于取值...就看你自己习惯使用哪种方式取了.是使用shell取值还是使用js来取值.这种使用shell执行的命令,我还是比较喜欢使用shell的方式去取值,那一起来看最终的实现:

/**
 * 测试与目标网络的ping值,返回最小值 最大值 平均值 平均偏差值
 * @param {string} target 目标网络的域名或者IP
 * @param {int} count  测试次数,次数越大,测试值越准确,但时间会越长
 */
function pingTest(target, count) {
    var res = shell("ping -c "+ count +" "+ target +" |grep 'rtt' |awk '{print $4}'").result;
        res = res.replace("\\n", "");
    var resArry = res.split("/");
    return {
        min : resArry[0], //最小值
        max : resArry[2], //最大值 
        avg : resArry[1], //平均值
        mdev: resArry[3]  //与平均值的偏差,值越大,说明网络越不稳定
    };
}


var t = pingTest("www.baidu.com", 10);
console.log(t.mdev);

附:获取单次ping的time值

var res = shell("ping -c 1 www.baidu.com |awk '{print $7}' |grep -o '[0-9].*'");
console.log(res);
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分