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()
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 #下载图片信息
看到有数据进来
满血拉二胡 残血到处浪