必須知道Python運維常用腳本!(日常更新)

      網友投稿 789 2022-05-29

      github地址:https://github.com/opsonly, 上面是一個基于python3.7和django2.1的多人博客系統,喜歡的可以給個star~

      你必須知道的Python運維常用腳本!(日常更新)

      判斷是否是一個目錄

      #!/usr/bin/env?python3#?-*-?coding:?utf-8?-*-#?@Time????:?2018-12-18?15:16#?@Author??:?opsonly#?@Site????:?#?@File????:?opsUse.py#?@Software:?PyCharmimport?os dir?=?"/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()

      查看網段里有多少ip地址

      #!/usr/bin/env?python3#?-*-?coding:?utf-8?-*-#?@Time????:?2018-12-18?15:31#?@Author??:?opsonly#?@Site????:?#?@File????:?ipTest.py#?@Software:?PyCharmimport?IPy ip?=?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,Response import?json,os,re,requests import?subprocess app?=?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.resolver from?collections?import?defaultdict hosts?=?['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()

      喜歡的可以關注一下,歡迎評論,不斷更新哦~

      ------------------------------------------------------

      本文轉自丁小水博客51CTO博客

      運維 Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:墨天輪評測:GaussDB(for Redis)穩定性與擴容表現
      下一篇:數據庫讀取速度與文件IO讀取速度比較
      相關文章
      蜜臀亚洲AV无码精品国产午夜.| 国产精品亚洲综合网站| 亚洲日本中文字幕天天更新| 亚洲AV中文无码乱人伦下载| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲精品无码久久久影院相关影片| 国产尤物在线视精品在亚洲| 亚洲七久久之综合七久久| 亚洲精品中文字幕无乱码麻豆| 亚洲高清日韩精品第一区| 亚洲国产精品久久66| 亚洲成年轻人电影网站www| 亚洲国产精品无码久久一线| 国内精品99亚洲免费高清| 亚洲国产综合无码一区二区二三区 | 亚洲VA中文字幕无码一二三区 | 亚洲熟妇av一区二区三区漫画| 久久99亚洲综合精品首页| 亚洲情侣偷拍精品| 亚洲熟伦熟女新五十路熟妇| 亚洲成?Ⅴ人在线观看无码| 亚洲国产精品综合久久网络| 亚洲精品成人久久久| 亚洲男女内射在线播放| 亚洲精品美女久久久久99小说| 亚洲国产精品尤物YW在线观看| 亚洲欧洲精品成人久久奇米网| 国产成人亚洲综合在线| 国产成人亚洲毛片| 久久亚洲AV无码西西人体| 色噜噜亚洲精品中文字幕| 亚洲人成中文字幕在线观看| 国产亚洲综合久久系列| 日韩亚洲人成在线综合日本| 亚洲爆乳精品无码一区二区三区 | 666精品国产精品亚洲 | 亚洲综合校园春色| 亚洲日韩精品国产3区| 精品国产日韩亚洲一区在线| 亚洲成人国产精品| 亚洲日产无码中文字幕|