你必须知道的python运维常用脚本
你必须知道的python运维常用脚本判断是否是一个目录#!/usr/bin/env python3# -*- coding: utf-8 -*-# Time : 2018-12-18 15:16# Author : opsonly# Site : # File : opsUse.py# Software: PyCharmimport osdir = "/var/www/html/EnjoyCarApi/"if os.path.isdir(dir): print('%s is a dir' % dir)else: print('%s is not a dir' % dir)系统内存与磁盘检测#!/usr/bin/env python3# -*- coding: utf-8 -*-# Time : 2018-12-17 17:16# Author : opsonly# Site : # File : systemissue.py# Software: PyCharmimport psutildef memissue(): print('内存信息:') mem = psutil.virtual_memory() # 单位换算为MB memtotal = mem.total/1024/1024 memused = mem.used/1024/1024 membaifen = str(mem.used/mem.total*100) + '%' print('%.2fMB' % memused) print('%.2fMB' % memtotal) print(membaifen)def cuplist(): print('磁盘信息:') disk = psutil.disk_partitions() diskuse = psutil.disk_usage('/') #单位换算为GB diskused = diskuse.used / 1024 / 1024 / 1024 disktotal = diskuse.total / 1024 / 1024 / 1024 diskbaifen = diskused / disktotal * 100 print('%.2fGB' % diskused) print('%.2fGB' % disktotal) print('%.2f' % diskbaifen)memissue()print('*')cuplist()统计nginx日志前十ip访问量并以柱状图显示#!/usr/bin/env python3# -*- coding: utf-8 -*-# Time : 2018-12-18 15:49# Author : opsonly# Site : # File : nginx_ip.py# Software: PyCharmimport matplotlib.pyplot as plt#nginx_file = 'nginx2018-12-18_07:45:26'ip = # 筛选nginx日志文件中的ipwith open(nginx_file) as f: for i in f.readlines(): s = i.strip().split()0 lengh = len(ip.keys() # 统计每个ip的访问量以字典存储 if s in ip.keys(): ips = ips + 1 else: ips = 1#以ip出现的次数排序返回对象为list http:/f-1.ccip = sorted(ip.items(), key=lambda e:e1, reverse=True)#取列表前十newip = ip0:10:1tu = dict(newip)x = y = for k in tu: x.append(k) y.append(tuk)plt.title('ip access')plt.xlabel('ip address')plt.ylabel('PV')#x轴项的翻转角度plt.xticks(rotation=70)#显示每个柱状图的值for a,b in zip(x,y): plt.text(a, b, '%.0f' % b, ha='center', va= 'bottom',fontsize=7)plt.bar(x,y)plt.legend()plt.show()查看网段里有多少ip地址#!/usr/bin/env python3# -*- coding: utf-8 -*-# Time : 2018-12-18 15:31# Author : opsonly# Site : # File : ipTest.py# Software: PyCharmimport IPyip = IPy.IP('172.16.0.0/26')print(ip.len()for i in ip: print(i)gitlab钩子脚本,实现简单自动化操作#!/usr/bin/env python3# -*- coding: utf-8 -*-# Time : 2018-12-18 17:41# Author : opsonly# Site :# File : gitlabCi.py# Software: PyCharmfrom flask import Flask,request,render_template,make_response,Responseimport json,os,re,requestsimport subprocessapp = Flask(_name_)null = ""cmd = "/var/www/html/ladmin-devel/"app.route('/test',methods='POST')def hello(): json_dict = json.loads(request.data) name = json_dict'event_name' ref = json_dict'ref'11: project = json_dict'project''name' if name = 'push' and ref = 'master': os.chdir(cmd) s = subprocess.getoutput('sudo -u nginx composer install') return Response(s) else: return Response('none')if _name_ = '_main_': app.run(host='0.0.0.0',port=8080)解析一组域名的ip地址#!/usr/bin/env python3# -*- coding: utf-8 -*-# Time : 2018-12-20 10:21# Author : opsonly# Site : # File : dnsReloves.py# Software: PyCharmimport dns.resolverfrom collections import defaultdicthosts = 'baidu.com','weibo.com's = defaultdict(list)def query(hosts): for host in hosts: ip = dns.resolver.query(host,"A") for i in ip: shost.append(i) return sfor i in query(hosts): print(i,si)清除指定redis缓存#!/usr/bin/env python3# -*- coding: utf-8 -*-# Time : 2018-12-20 15:19# Author : opsonly# Site : # File : redisdel.py# Software: PyCharmimport redis#选择连接的数据库db = input('输入数据库:')r = redis.Redis(host='127.0.0.1',port=6379,db=0)#输入要匹配的键名 www.44226.netid = input('请输入要执匹配的字段:')arg = '*' + id + '*'n = r.keys(arg)#查看匹配到键值for i in n: print(i.decode('utf-8')#确定清除的键名delid = input('输入要删除的键:')print('清除缓存 %s 成功' % delid)下载阿里云RDS二进制日志#!/usr/bin/env python3# -*- coding: utf-8 -*-# Time : 2018-12-12 13:52# Author : opsonly# Site : # File : rds_binlog.py# Software: PyCharm'''查询阿里云rds binlog日志'''import base64,urllib.requestimport hashlibimport hmacimport uuid,time,json,wgetclass RDS_BINLOG_RELATE(object): def _init_(self): #阿里云的id和key self.access_id = '*' self.access_key = '*' #通过id和key来进行签名 def signed(self): timestamp = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime() header = 'Action': 'DescribeBinlogFiles', 'DBInstanceId': 'rm-wz9azm783q621n9',