py脚本练习

基础语法参考

https://www.liaoxuefeng.com/wiki/1016959663602400/1016959856222624

参考

https://github.com/yorkoliu/pyauto

1.ip子网划分和查询

pip install IPy -i https://mirrors.aliyun.com/pypi/simple/

 

vi ip.py

#!/usr/bin/env python

from IPy import IP

ip_s = raw_input('Please input an IP or net-range: ')
ips = IP(ip_s)


if len(ips) > 1:
    print('net: %s' % ips.net())
    print('netmask: %s' % ips.netmask())
    print('broadcast: %s' % ips.broadcast())
    print('reverse address: %s' % ips.reverseNames()[0])
    print('subnet: %s' % len(ips))
else:
    print('reverse address: %s' % ips.reverseNames()[0])

print('hexadecimal: %s' % ips.strHex())
print('binary ip: %s' % ips.strBin())
print('iptype: %s' % ips.iptype())

2.dns模块安装 只有要dns目录就可以使用dns库

 

 

  189  wget http://www.dnspython.org/kit/1.9.4/dnspython-1.9.4.tar.gz
  190  wget http://www.dnspython.org/kits/1.9.4/dnspython-1.9.4.tar.gz
  191  ls
  192  tar -zxvf dnspython-1.9.4.tar.gz 
  193  ls
  194  cd dnspython-1.9.4
  195  ls
  196  python setup.py install

vi dns.py

#!/usr/bin/env python
import dns.resolver

domain = raw_input('Please input an domain: ')

A = dns.resolver.query(domain, 'A')
for i in A.response.answer:
    for j in i.items:
        print j.address


3.内部邮件系统python发信测试

import smtplib
import string

HOST = "192.168.120.55"
SUBJECT = "Test email from Python"
TO = "xxx@mx.zhcs.com"
FROM = "zzx@mx.zhcs.com"
text = "Python rules them all!"
BODY = string.join((
        "From: %s" % FROM,
        "To: %s" % TO,
        "Subject: %s" % SUBJECT ,
        "",
        text
        ), "\r\n")
server = smtplib.SMTP()
server.connect(HOST,"25")
server.starttls()
server.login("xxx","123456")
server.sendmail(FROM, [TO], BODY)
server.quit()

 4.py编辑excel #注意测试需要个图片文件img/python-logo.png

#coding: utf-8
import xlsxwriter


# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook('demo1.xlsx')
worksheet = workbook.add_worksheet()

# Widen the first column to make the text clearer.
worksheet.set_column('A:A', 20)

# Add a bold format to use to highlight cells.
#bold = workbook.add_format({'bold': True})
bold = workbook.add_format()
bold.set_bold()

# Write some simple text.
worksheet.write('A1', 'Hello')

# Text with formatting.
worksheet.write('A2', 'World', bold)

worksheet.write('B2', u'中文测试', bold)

# Write some numbers, with row/column notation.
worksheet.write(2, 0, 32)
worksheet.write(3, 0, 35.5)
worksheet.write(4, 0, '=SUM(A3:A4)')

# Insert an image.
worksheet.insert_image('B5', 'img/python-logo.png')

workbook.close()

demo1.xlsx文件名

 更复杂的图标数据

#coding: utf-8
import xlsxwriter

workbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()

chart = workbook.add_chart({'type': 'column'})

title = [u'业务名称',u'星期一',u'星期二',u'星期三',u'星期四',u'星期五',u'星期六',u'星期日',u'平均流量']
buname= [u'业务官网',u'新闻中心',u'购物频道',u'体育频道',u'亲子频道']

data = [
    [150,152,158,149,155,145,148],
    [89,88,95,93,98,100,99],
    [201,200,198,175,170,198,195],
    [75,77,78,78,74,70,79],
    [88,85,87,90,93,88,84],
]
format=workbook.add_format()
format.set_border(1)

format_title=workbook.add_format()
format_title.set_border(1)
format_title.set_bg_color('#cccccc')
format_title.set_align('center')
format_title.set_bold()

format_ave=workbook.add_format()
format_ave.set_border(1)
format_ave.set_num_format('0.00')

worksheet.write_row('A1',title,format_title)
worksheet.write_column('A2', buname,format)
worksheet.write_row('B2', data[0],format)
worksheet.write_row('B3', data[1],format)
worksheet.write_row('B4', data[2],format)
worksheet.write_row('B5', data[3],format)
worksheet.write_row('B6', data[4],format)

def chart_series(cur_row):
    worksheet.write_formula('I'+cur_row, \
     '=AVERAGE(B'+cur_row+':H'+cur_row+')',format_ave)
    chart.add_series({
        'categories': '=Sheet1!$B$1:$H$1',
        'values':     '=Sheet1!$B$'+cur_row+':$H$'+cur_row,
        'line':       {'color': 'black'},
        'name':    '=Sheet1!$A$'+cur_row,
    })

for row in range(2, 7):
    chart_series(str(row))

#chart.set_table()
#chart.set_style(30)
chart.set_size({'width': 577, 'height': 287})
chart.set_title ({'name': u'业务流量周报图表'})
chart.set_y_axis({'name': 'Mb/s'})

worksheet.insert_chart('A8', chart)
workbook.close()
View Code

 5.rrdtool模块安装 和使用

yum install -y gcc
yum install -y rrdtool yum install -y rrdtool-python pip install rrdtool -i https://mirrors.aliyun.com/pypi/simple/ #可能不需要

vi creat.py #生产数据

# -*- coding: utf-8 -*-
#!/usr/bin/python
import rrdtool
import time

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()

 

vi graph.py #出图数据 注意eth0_in是网卡名如果是enss33就改成ens33_in不然传不了数据

# -*- coding: utf-8 -*-
#!/usr/bin/python
import rrdtool
import time

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")
python creat.py
python graph.py

 

 更新网卡信息到图表


psutil模块安装
wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz
tar -zxvf psutil-2.1.3.tar.gz
cd psutil-2.1.3
yum install gcc python-devel
python setup.py install
cp -r psutil /root/ #执行命令的目录要跟这个文件夹同一级别

[root@82server ~]# cat update.py #前几次更新可能没有数据后面在多试几次或者命令操作查看数据
# -*- coding: utf-8 -*-
#!/usr/bin/python
import rrdtool
import time,psutil
 
total_input_traffic = psutil.net_io_counters()[1]
total_output_traffic = psutil.net_io_counters()[0]
starttime=int(time.time())

update=rrdtool.updatev('/root/Flow.rrd','%s:%s:%s' % (str(starttime),str(total_input_traffic),str(total_output_traffic)))
print update 

测试数据

 


python update.py#更新数据信息
python graph.py #更新图表信息 /root/Flow.rrd为数据源信息
sz Flow.png #下载图片信息

看到有数据进来

 

 



posted @ 2019-12-13 17:09  夜辰雪扬  阅读(196)  评论(0)    收藏  举报