美文网首页
用python简单分析下ping时延

用python简单分析下ping时延

作者: 余生还长你别慌 | 来源:发表于2019-08-15 14:16 被阅读0次

    用python简单分析下ping时延

    先用的secureCRT的vbs脚本,获取ping测试结果:

    1. 先是用crt的录制脚本功能录制下,然后批量复制即可。脚本如图:


      vbs截图.jpg
    2. 这里批量复制用的excel来生成的哈(这年头会用的工具就要杂一点,哇咔咔)

      (1)方法就是先所有要测试的站点IP复制到excel里,

      (2)然后每个IP前后复制进去脚本命令

      (3)最后用EXCEL的CONCATENATE()函数将几个表格合并即可。用python起始也是可以的哈。

    将vbs脚本挂到某个能ping通站点的服务器或者电脑上,保存会话然后运行脚本即可(注意,断站的站点没在测试列,如果加上断站的站点IP,要加入一个判断才行)。

    取出测试结果,用python进行分析。两个函数:1. get_ping_test(read_list)输入ping结果的列表,然后输出ping结果文件《站点ping结果统计.txt》;2.get_10ms_ping(read_list)输入ping结果的列表,然后输出平均时延大于10ms的结果文件《大于10ms的站点ping结果.txt》;中间顺便记录了总站点数X,大于10MS的站点数Y,大于30ms的站点数Z,最后顺便打印哈。具体代码如下:

    # -*- encoding=UTF-8 -*-
    __author__ = 'wjj1982'
    __date__ = '2019/8/13 16:01'
    __product__ = 'PyCharm'
    __filename__ = 'ping-test'
    
    import os
    
    
    def get_ping_test(read_list):
        """从ping测试结果中去掉ping命令,直接获取ping测试结果行"""
        x = 0
        filename_out = '站点ping结果统计.txt'
        filename_output = open(filename_out, 'a')
        for value in read_list:
            if '--- ' in value:
                filename_output.write(value)
                x += 1
            elif 'min/avg/max/mdev' in value:
                filename_output.write(value)
        filename_output.close()
        return x
    
    
    def get_10ms_ping(read_list):
        """ 从ping测试结果中获取ping测试结果大于10ms的所有行,并且统计下大于30ms的行数
        y存放的大于10ms的行数
        z存放的大于30ms的行数 """
        y = 0
        z = 0
        filename_out2 = '大于10ms的站点ping结果.txt'
        filename_output2 = open(filename_out2, 'a')
        for index, value in enumerate(read_list):
            if 'min/avg/max/mdev' in value:
                if float(value.split('=')[1].split('/')[1]) > 10:
                    filename_output2.write(read_list[index - 2])
                    filename_output2.write(value)
                    y += 1
                    if float(value.split('=')[1].split('/')[1]) > 30:
                        z += 1
        filename_output2.close()
        return y, z
    
    
    def main():
        if os.path.exists('站点ping结果统计.txt'):
            os.remove('站点ping结果统计.txt')
        if os.path.exists('大于10ms的站点ping结果.txt'):
            os.remove('大于10ms的站点ping结果.txt')
    
        filename = input("输入ping测试结果文件:")
        filename_input = open(filename, 'r')
        # readlines读取文件后,循环一遍指针就到了最后了,不能第二遍循环,所以先用个列表复制下,把列表作为两个函数的入参
        read_list = []
        for line in filename_input.readlines():
            read_list.append(line)
    
        # 把列表作为两个函数的入参
        x = get_ping_test(read_list)
        y, z = get_10ms_ping(read_list)
    
        print('ping测试基站总数/大于10ms的基站数/大于30ms的基站数:{}/{}/{}'.format(x, y, z))
        filename_input.close()
    
    
    if __name__ == '__main__':
        main()
    
    

    相关文章

      网友评论

          本文标题:用python简单分析下ping时延

          本文链接:https://www.haomeiwen.com/subject/djrzjctx.html