博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你必须知道的python运维常用脚本!(日常更新)
阅读量:6796 次
发布时间:2019-06-26

本文共 7338 字,大约阅读时间需要 24 分钟。

github地址:, 上面是一个基于python3.7django2.1的多人博客系统,喜欢的可以给个star~



判断是否是一个目录

#!/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():            ip[s] = ip[s] + 1        else:            ip[s] = 1#以ip出现的次数排序返回对象为listip = sorted(ip.items(), key=lambda e:e[1], reverse=True)#取列表前十newip = ip[0:10:1]tu = dict(newip)x = []y = []for k in tu:    x.append(k)    y.append(tu[k])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()

test.png



查看网段里有多少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:            s[host].append(i)    return sfor i in query(hosts):    print(i,s[i])

清除指定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)#输入要匹配的键名id = 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',            'StartTime': '2018-07-11T15:00:00Z',            'EndTime': timestamp,            'Format': 'JSON',            'Version': '2014-08-15',            'AccessKeyId': self.access_id,            'SignatureVersion': '1.0',            'SignatureMethod': 'HMAC-SHA1',            'SignatureNonce': str(uuid.uuid1()),            'TimeStamp': timestamp,        }        #对请求头进行排序        sortedD = sorted(header.items(), key=lambda x: x[0])        url = 'https://rds.aliyuncs.com'        canstring = ''        #将请求参数以#连接        for k, v in sortedD:            canstring += '&' + self.percentEncode(k) + '=' + self.percentEncode(v)        #对请求连接进行阿里云要的编码规则进行编码        stiingToSign = 'GET&%2F&' + self.percentEncode(canstring[1:])        bs = self.access_key + '&'        bs = bytes(bs, encoding='utf8')        stiingToSign = bytes(stiingToSign, encoding='utf8')        h = hmac.new(bs, stiingToSign, hashlib.sha1)        stiingToSign = base64.b64encode(h.digest()).strip()        #将签名加入到请求头        header['Signature'] = stiingToSign        #返回url        url = url + "/?" + urllib.parse.urlencode(header)        return url    #按照规则替换    def percentEncode(self,store):        encodeStr = store        res = urllib.request.quote(encodeStr)        res = res.replace('+', '%20')        res = res.replace('*', '%2A')        res = res.replace('%7E', '~')        return str(res)    #筛选出链接下载二进制日志文件    def getBinLog(self):        binlog_url = self.signed()        req = urllib.request.urlopen(binlog_url)        req = req.read().decode('utf8')        res = json.loads(req)        for i in res['Items']['BinLogFile']:            wget.download(i['DownloadLink'])s = RDS_BINLOG_RELATE()s.getBinLog()

12-27更新

阿里云通过465端口发送邮件

#!/usr/bin/env python3# -*- coding: utf-8 -*-# @Time    : 2018-12-26 15:41# @Author  : opsonly# @Site    : # @File    : aliSendMail.py# @Software: PyCharmimport smtplibimport sysfrom email.mime.text import MIMETextfrom email.utils import formataddr#发件人邮箱账号my_sender = 'xxxxxxx'#发件人第三方客户端授权码my_pass = 'xxxxxx'#收件人邮箱账号my_user = 'xxxxxxxx'#接收参数并定义标题和内容subject = sys.argv[1]context = sys.argv[2]def mail():    mail_msg = context    #发送信息    msg = MIMEText(mail_msg, 'html', 'utf-8')    msg['From'] = formataddr(["dashui", my_sender])    msg['To'] = formataddr(["dashui", my_user])    msg['Subject'] = subject    #因为阿里云25号端口默认关闭,采用465端口    server = smtplib.SMTP_SSL("smtp.163.com", 465)    server.login(my_sender, my_pass)    server.sendmail(my_sender, [my_user, ], msg.as_string())    server.quit()try:    mail()    print('邮件发送成功')except:    print('邮件发送失败')

喜欢我写的东西的朋友可以关注一下我的公众号,上面有我的学习资源以及一些其他福利:Devops部落

你必须知道的python运维常用脚本!(日常更新)

转载于:https://blog.51cto.com/dashui/2334754

你可能感兴趣的文章
Lync部署之Lync Mobile在Server上的设置
查看>>
Access字符串处理函数整理
查看>>
check_mk error 二 on centos
查看>>
2015年9月30日梳理重点的作业
查看>>
php数组排序
查看>>
Echart饼状图中心加固定文字及计算结果
查看>>
我的友情链接
查看>>
TCPIP协议号
查看>>
我的友情链接
查看>>
修改/etc/resolv.conf重启之后自动还原
查看>>
centos6.2 安装 ntopng
查看>>
mysqldumpslow 命令
查看>>
hibernate学习(6)——一对一单向外键关联
查看>>
关于网上邻居
查看>>
lsof端口查看
查看>>
模板技巧之:物联预算模板点击提交没反应的原因
查看>>
ORA-06502 awr
查看>>
订单需求
查看>>
android 测试 --使用sqlite3查看手机数据库系统
查看>>
KVM(一)安装篇
查看>>