zoukankan      html  css  js  c++  java
  • 分析ip流量的python脚本

    日志文件格式如下

    172.16.225.66	10.71.2.162	1612409
    172.16.15.252	10.71.11.31	1210446
    172.16.15.252	10.71.11.59	1197976
    172.16.15.252	10.71.11.30	1166167
    172.16.15.252	10.71.11.66	1149429
    172.16.15.252	10.71.11.65	1124686
    172.16.15.252	10.71.11.46	1110412
    

     使用anychart图标插件

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>AnyChart Sample</title>
    <script type="text/javascript" language="javascript" src="./AnyChart.js"></script>
    </head>
    <body>
        <script type="text/javascript" language="javascript">
        //<![CDATA[
        var chart = new AnyChart('./AnyChart.swf');
        chart.width = 800;
        chart.height = 500;
        chart.setXMLFile('./buildxml/');
        chart.write();
        //]]>
        </script>
    </body>
    </html>
    

    数据由这个地址提供 

    chart.setXMLFile('./buildxml/');

    这个地址由Django生成 (写的很糙,新手)

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    import glob
    import datetime
    from django.http import HttpResponse
    
    
    
    #build dynamic data
    def build_xml(request):
        file_list = glob.glob('/vm_share/Bps*')
        file_list.sort()
    
        result = {}
    
        for id,fn in enumerate(file_list):
            for line in open(fn):
                src_ip, dest_ip, flow = line.split()
                result.setdefault(src_ip, [0] * len(file_list))[id] += int(flow) / 1000
                result.setdefault(dest_ip, [0] * len(file_list))[id] += int(flow) / 1000
        del_list = []
        for key in result:
            if max(result[key]) <= 5000:
                del_list.append(key)
    
        for key in del_list:
            del result[key]
        
        #build xml format
        xml_start = r'''
        <?xml version="1.0" encoding="UTF-8"?>
        <anychart>
        <settings>
        <animation enabled="True" />
        </settings>
        <charts>
        <chart>
        <data_plot_settings default_series_type="Line">
        <line_series>
        <tooltip_settings enabled="true">
        <format>
        IP:{%SeriesName}
        流量:{%Value}{numDecimals:0}
        </format>
        </tooltip_settings>
        </line_series>
        </data_plot_settings>
        <data>
        '''
        xml_end = r'''
        </data>
        <chart_settings>
        <title>
        <text>IP流量分析</text>
        </title>
        <axes>
        <y_axis>
        <title>
        <text>KB/s</text>
        </title>
        </y_axis>
        <x_axis>
        <labels align="Outside" />
        <title>
        <text>时间</text>
        </title>
        </x_axis>
        </axes>
        </chart_settings>
        </chart>
        </charts>
        </anychart>
        '''
        
        start_time = datetime.datetime(2012,07,26,20,04,00)
        time_interval = datetime.timedelta(minutes=5)
        time_axis = []
        for i in range(len(file_list)):
            time_axis.append(start_time.strftime('%H:%M'))
            start_time += time_interval
        xml = ''
        for ip in result:
            i = 0
            xml_data = '<series name="%s" >' %ip
            xml += xml_data
            for point in result[ip]:
                xml_data = '<point name="%s" y="%s" />' %(time_axis[i], point)
                xml += xml_data
                i += 1
            xml_data = '</series>'
            xml += xml_data
        return HttpResponse(xml_start + xml + xml_end)
    

    这是展示

  • 相关阅读:
    (八)shell 计算命令
    (七)shell内建命令
    (六)shell数组深入解析
    (五)shell字符串深入解析
    输出链表的倒数第K个值
    反转链表
    调整该数组中数字的顺序,奇数在前,偶数在后
    基类与派生类的对象调用
    printf以%d形式输出浮点数的问题
    数值的整数次方
  • 原文地址:https://www.cnblogs.com/txwsqk/p/2612013.html
Copyright © 2011-2022 走看看