通过psutil和rrdtool模块相结合绘制网卡网络流量
实例代码:
./cretea.py #!/usr/bin/python |
./update.py import time,psutil import rrdtool total_input_traffic=psutil.net_io_counters()[1] total_output_traffic=psutil.net_io_counters()[0] starttime=int(time.time()) update=rrdtool.updatev('/root/Scripts/rrdtools/Flow.rrd','%s:%s:%s' % (str(starttime),str(total_input_traffic),str(total_output_traffic))) print(update) |
./graph.py import time,psutilimport rrdtool title="Server network,traffic flow ("+time.strftime('%Y-%m-%d',time.localtime(time.time()))+")" rrdtool.graph("Flow.png","--start","-1d","--vertical-label=Bytes/s", "--x-grid","MINUTE:12:HOUR:1:HOUR:1:0:%H","--width","650","--height","230", "--title",title, "DEF:inoctets=Flow.rrd:eth0_in:AVERAGE", "DEF:outoctets=Flow.rrd:eth0_out:AVERAGE","CDEF:total=inoctets,outoctets,+", "LINE1:total#FF8833:Total traffic","AREA:inoctets#00FF00:IN traffic", "LINE1:outoctets#0000FF:Out traffic","HRULE:6144#FF0000:Alarm value\\r", "CDEF:inbits=inoctets,8,*","CDEF:outbits=outoctets,8,*", "COMMENT:\\r", "COMMENT:\\r", "GPRINT:inbits:AVERAGE:Avg In traffic\: %6.2lf %Sbps", "COMMENT: ","GPRINT:inbits:MAX:Max In traffic\: %6.2lf %Sbps", "COMMENT: ","GPRINT:inbits:MIN:Min In traffic\: %6.2lf %Sbps\\r","COMMENT: ","GPRINT:outbits:AVERAGE:Avg OuT traffic\: %6.2lf %Sbps","COMMENT: ","GPRINT:outbits:MAX:Max OuT traffic\: %6.2lf %Sbps", "COMMENT: ","GPRINT:outbits:MIN:Min OuT traffic\: %6.2lf %Sbps\\r") |
实现TCP探测目标路由轨迹
所需安装包:ImageMagick(转换图片格式工具),graphviz(绘制图形工具)
通过scapy的traceroute方法查询到路由轨迹,然后调用graph()方法进行路由轨迹的绘制,中间调用ASN映射查询IP地理信息并生成svg流程文档,最后使用ImageMagic工具转换svg格式为png格式。
import logging,warnings import sys,os,subprocess import time warnings.filterwarnings("ignore",category=DeprecationWarning) #屏蔽scapy 无用信息 #接受输入的域名或IP |