前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3、python自动化运维——定制业务质

3、python自动化运维——定制业务质

作者头像
py3study
发布2020-01-03 16:27:58
4000
发布2020-01-03 16:27:58
举报
文章被收录于专栏:python3python3

通过psutil和rrdtool模块相结合绘制网卡网络流量

test.png
test.png

实例代码:

代码语言:javascript
复制
./cretea.py

#!/usr/bin/python
  import time
  import rrdtool
  
  cur_time=str(int(time.time()))
  rrd=rrdtool.create('Flow.rrd','--step','300','--start',cur_time,
        'DS:eth0_in:COUNTER:600:0:U',
        'DS:eth0_out:COUNTER:600:0:U',
        'RRA:AVERAGE:0.5:1:600',
        'RRA:AVERAGE:0.5:6:700',
        'RRA:AVERAGE:0.5:24:775',
        'RRA:AVERAGE:0.5:288:797',
        'RRA:MAX:0.5:1:600',
        'RRA:MAX:0.5:6:700',
                  'RRA:MAX:0.5:24:775',
        'RRA:MAX:0.5:444:797',
        'RRA:MIN:0.5:1:600',
                  'RRA:MIN:0.5:6:700',
                  'RRA:MIN:0.5:24:775',
                  'RRA:MIN:0.5:444:797')
  if rrd:
     print(rrdtool.error())

 
代码语言:javascript
复制
./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)
代码语言:javascript
复制
./graph.py

import time,psutil
import 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格式。

代码语言:javascript
复制
import logging,warnings
  import sys,os,subprocess
  import time
  
  warnings.filterwarnings("ignore",category=DeprecationWarning)  

#屏蔽scapy 无用信息
  logging.getLogger("scapy.runtime").setLevel(logging.ERROR)      
  #屏蔽模块IPV6多余告警
  from scapy.all   import traceroute
  domains=raw_input("please input you   domain name:\n")

#接受输入的域名或IP
  target=domains.split(" ")
  dport = [80]
  
  if len(target) >=1 and target[0]!='':
     res,unans =traceroute(target,dport=dport,retry=-2)#启动路由跟踪
     res.graph(target="> test.svg")    #生成svg图片
     time.sleep(1)
     subprocess.Popen("/usr/bin/convert test.svg test.png",shell=True)
  else:
     print("IP/domain name Error")
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档