尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

运维自动化之实用python代码汇总

运维自动化之实用python代码汇总 这篇文章针对运维这一项工作, 对其内经常使用的一系列实用代码块进行了总结, 从而形成了一种情况,即使用者在遇到相应需求之时, 能够将这些内容直接搬运过来加以应用。1.执行系统命令, 获取返回结果。from subprocess import Popen, PIPE, STDOUTcp Popen(dir, stdoutPIPE, stderrSTDOUT, shellTrue)infostr(cp.stdout.readline().decode())print(info)2.我们对时间信息进行了处理, 同时还完成了格式的转换工作。#当前时间格式化import datetime,timedatadatetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S)print(data) #2020-02-05 10:22:17#格式化转timeStampdatatime.mktime(time.strptime(2020-07-09T14:49:51Z, %Y-%m-%dT%H:%M:%SZ))print(data) #1594277391.0#timeStamp转格式化import datetimedatadatetime.datetime.fromtimestamp(1551576293.0).strftime(%Y-%m-%d %H:%M:%S)print(data) #2019-03-03 09:24:53#时间差import timedata int(time.time())-int(time.mktime(time.strptime(2020-07-09T14:49:51Z, %Y-%m-%dT%H:%M:%SZ)))print(data) #345s#格式化时间加减datadatetime.datetime.fromtimestamp(time.mktime(time.strptime(2013-10-10 23:40:00, %Y-%m-%d %H:%M:%S))8*3600).strftime(%Y-%m-%d %H:%M:%S)print(data) #2013-10-11 07:40:003.通过钉钉应用将相关信息以消息的形式发送出来。写这段代码, 主要是使用自带的包, 而不是使用的意思, 本着能使用自带的, 就不使用其他的原则。##############python3############################from urllib import requestimport os,jsondef DingDing(msg):urlhttps://oapi.dingtalk.com/robot/send?access_tokenxxxxxxxxxdata {msgtype: text, text: {content: %s\n脚本路径:%s % (msg,os.path.realpath(__file__))}, at: {atMobiles: [xxxxxxxx], isAtAll: False}}req request.Request(urlurl,datajson.dumps(data).encode(utf-8),headers{Content-Type: application/json},methodPOST)response request.urlopen(req)return response.read().decode()##############python2############################import urllib2,jsondef DingDing(msg):urlhttps://oapi.dingtalk.com/robot/send?access_tokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdata {msgtype: text, text: {content: msg}, at: {atMobiles: [xxxxxxxxxxxxxxx], isAtAll: False}}request urllib2.Request(urlurl,headers{Content-Type:application/json},datajson.dumps(data))response urllib2.urlopen(request)return response.read()4.日志配置####日志自动切割import time,sys,os,loggingfrom logging.handlers import RotatingFileHandlerlog_obj logging.getLogger()fileHandle logging.handlers.TimedRotatingFileHandler(os.path.join(sys.path[0], cron_ops.log),whend,interval1,backupCount10)fileHandle.setFormatter(logging.Formatter(%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s))log_obj.addHandler(fileHandle)log_obj.info(日志内容)####日志打印到控制台import time,sys,loggingconsole_log logging.getLogger()console_log.setLevel(logging.INFO)streamHandle logging.StreamHandler()streamHandle.setFormatter(logging.Formatter(%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s))console_log.addHandler(streamHandle)console_log.info(日志打印)5.关于加解密所使用的代码。这段代码本身也具备处理中文文本进行加密与解密的功能, 所以在正式开始使用它之前, 你需要先去把相关的安装包给安装完毕。#pip3 install pycryptodome #https://pypi.tuna.tsinghua.edu.cn/simple/cryptography/from Crypto.Cipher import DES3import base64class EncryptData:def __init__(self):self.key 5YIGo8frLeqUAewDo2AVkNKUself.iv bxluhjoLDself.length DES3.block_sizeself.unpad lambda date: date[0:-ord(date[-1])]def pad(self, text):count len(text.encode(utf-8))add self.length - (count % self.length)entext text (chr(add) * add)return entextdef encrypt(self, encrData):self.des3 DES3.new(self.key, DES3.MODE_CBC, self.iv)res self.des3.encrypt(self.pad(encrData).encode(utf8))msg str(base64.b64encode(res), encodingutf8)return msgdef decrypt(self, decrData):self.des3 DES3.new(self.key, DES3.MODE_CBC, self.iv)res base64.decodebytes(decrData.encode(utf8))msg self.des3.decrypt(res).decode(utf8)return self.unpad(msg)eg EncryptData()res eg.encrypt(13918密钥的长度必须是16238353)print(res) ####YtO3hoYxnohOtWgH2UrYh1nDZ58QmksVbWLVDBJVg4kfaQWASCzAwprint(eg.decrypt(res)) ####13918密钥的长度必须是162383536.字典key转对象class selfAttrDict(dict):def __setattr__(self, key, value):self.__setitem__(key, value)def __getattr__(self, item):return self.__getitem__(item)def __delattr__(self, item):self.__delitem__(item)dicrs{name:dfddfdffd}ssselfAttrDict(dicrs)print(ss.name) ####dfddfdffd
返回列表