欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過Python掃描代碼關(guān)鍵字并進(jìn)行預(yù)警的實現(xiàn)方法

 更新時間:2020年05月24日 09:55:26   作者:中年YN  
這篇文章主要介紹了通過Python掃描代碼關(guān)鍵字并進(jìn)行預(yù)警的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

近期線上出現(xiàn)一個bug,研發(fā)的小伙伴把測試環(huán)境的地址寫死到代碼中,在上線前忘記修改,導(dǎo)致線上發(fā)布的代碼中使用了測試環(huán)境地址。

開發(fā)過程中雖然有各種規(guī)范制度,但是難免有粗心,與其責(zé)備不如通過技術(shù)手段將問題進(jìn)行避免。

為了達(dá)到上述需求,初步想通過以下步驟來實現(xiàn)代碼關(guān)鍵字自動掃描告警。

  1. Python安裝
  2. Git安裝
  3. GitPython安裝
  4. 定時任務(wù)配置(方案一:crontab   方案二:APScheduler)
  5. git代碼獲取
  6. 關(guān)鍵詞掃描
  7. 郵件告警
#安裝python的依賴包
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel gcc
#下載Python安裝包,版本號:Python-3.7.1.tgz(在/opt下創(chuàng)建目錄Python3)
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
#解壓安裝包
tar -zxvf Python-3.8.1.tgz
#指定python3安裝目錄
./configure --prefix=/usr/local/python3
#編譯&安裝
make && make install
#創(chuàng)建軟連接,將自定目錄管理到指定目錄
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
#添加環(huán)境變量
vi /etc/profile
export PATH=/usr/local/python3/bin:$PATH
 source /etc/profile

#至此Python3安裝完畢,通過命令驗證

Git安裝
#下載git安裝包,版本號:2.21.0
wget https://github.com/git/git/archive/v2.21.0.tar.gz
#解壓
tar -zxvf v2.21.0.tar.gz
#安裝
make prefix=/usr/local/git install
#添加環(huán)境變量
vi /etc/profile
export PATH=/usr/local/git/bin:$PATH
source /etc/profile
 #至此Python3安裝完畢,通過命令驗證

GitPython3安裝
#可以采用在線安裝
pip3 install GitPython
#但是我這里由于網(wǎng)絡(luò)限制無法在線安裝,只能采用手動安裝
#下載依賴包,下載地址https://pypi.org/,可以根據(jù)關(guān)鍵字smmap、gitdb進(jìn)行檢索下載
smmap-3.0.4.tar.gz
gitdb-4.0.5.tar.gz
#安裝
tar -zxvf smmap-3.0.4.tar.gz
cd smmap-3.0.4
python3 setup.py install

tar -zxvf gitdb-4.0.5.tar.gz
cd gitdb-4.0.5
python3 setup.py install

tar -zxvf GitPython-3.1.2
cd GitPython-3.1.2
python3 setup.py install

#安裝完畢后,可以寫一個demo.py進(jìn)行驗證
復(fù)制代碼
from git.repo import Repo
import os

demo_git_path = '/opt/workspace/demo'

#定義本地目錄
Repo.clone_from('http://git.***.com/demo/demo_git.git',to_path=demo_git_path, branch='master')
復(fù)制代碼
 #最終代碼庫將克隆到本地目錄(執(zhí)行前將demo.py賦權(quán))

 python3 demo.py
linux下配置定時任務(wù)
#定時任務(wù)采用linux的crontab來實現(xiàn)
#編輯定時任務(wù)
crontab -e
* * * * * python3 /opt/python3-workspace/demo.py >> /opt/python3-workspace/logs/demo.log
#前五個是時間指令,分鐘(0-59)小時(0-28)日期(1-31)月份(1-12)星期幾(0-6,其中0代表星期日)
#python3 是具體執(zhí)行的指令 后面跟的是執(zhí)行的腳本 在后面跟的是日志
#編輯保存后會立即執(zhí)行
#查看當(dāng)前正在運(yùn)行的任務(wù),本案例中已臨時注釋#
crontab -l

原計劃使用linux的crontab進(jìn)行任務(wù)調(diào)度,但是在執(zhí)行GitPython命令時遇到兩個問題,即

  問題一:在crontab中無法調(diào)用GitPython命令,解決方案,在crontab中增加GitPython的路徑

  主要內(nèi)容是在crontab中增加如下代碼,至此第問題一可以解決

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/root/bin
MAILTO=root
HOME=/

  問題二:在crontab中執(zhí)行GitPython命令時,無法讀取linux記錄的賬號密碼,導(dǎo)致自動任務(wù)始終無法檢出代碼,由于該問題一直未解決,因此決定采用python的定時任務(wù)調(diào)度解決該問題,具體見下文

APScheduler安裝
#這里由于網(wǎng)絡(luò)限制無法在線安裝,只能采用手動安裝
#下載依賴包,下載地址https://pypi.org/,可以根據(jù)關(guān)鍵字pytz、six、tzlocal進(jìn)行檢索下載
pytz-2020.1.tar.gz
six-1.14.0.tar.gz
tzlocal-2.1.tar.gz
APScheduler-3.6.3.tar.gz

#安裝tzlocal
tar -zxvf tzlocal-2.1.tar.gz
cd tzlocal-2.1
python3 setup.py install

#安裝six
tar -zxvf six-1.14.0.tar.gz
cd six-1.14.0
python3 setup.py install

#安裝pytz
tar -zxvf pytz-2020.1.tar.gz
cd pytz-2020.1
python3 setup.py install

#安裝APScheduler
tar -zxvf APScheduler-3.6.3.tar.gz
cd APScheduler-3.6.3
python3 setup.py install

至次APScheduler安裝完畢,寫個demo驗證下:

git代碼獲取

通過Repo.clone_from獲取遠(yuǎn)程代碼倉庫,指定master分支,將遠(yuǎn)程代碼庫clone到本地/opt/workspace/demo目錄下,
如果當(dāng)前目錄不為空,則通過shutil.rmtree()進(jìn)行級聯(lián)刪除

關(guān)鍵詞掃描
利用os組件,實現(xiàn)對指定目錄進(jìn)行遞歸掃描,將符合要求的文件擴(kuò)展名.css .js .ftl .properties等文件進(jìn)行逐行掃描
關(guān)鍵詞掃描其實就是利用正則表達(dá)式,對要掃描的關(guān)鍵詞進(jìn)行匹配,如果匹配成功則將目標(biāo)文件名稱放入到異常文件列表
詳細(xì)代碼如下:
import os
import re
project_git_path = '/opt/workspace/demo'
cssnum = 0
jsnum = 0
ftlnum = 0
fileList = []
pattern = re.compile(r'.test.com')
def analysiFile(pathFilename):
 #print('文件名:', filename)
 fo = open(pathFilename, 'r', encoding='UTF-8')
 for line in fo.readlines():
  match = pattern.search(line)
  if match:
   if(fileList.count(filename) == 0):
    fileList.append(filename);
#循環(huán)打印目錄下的所有文件
for parentdir, dirname, filenames in os.walk(project_git_path):
 for filename in filenames:
  if os.path.splitext(filename)[1] == '.css':
   #分析具體文件
   analysiFile(parentdir + '\\' + filename)
  if os.path.splitext(filename)[1] == '.js':
   #分析具體文件
   analysiFile(parentdir + '\\' + filename)
  if os.path.splitext(filename)[1] == '.ftl':
   #分析具體文件
   analysiFile(parentdir + '\\' + filename)
  if os.path.splitext(filename)[1] == '.properties':
   #分析具體文件
   analysiFile(parentdir + '\\' + filename)
for item in fileList:
 print('命中文件:', item)
print('共計:', len(fileList))
郵件告警
郵件告警即通過smtp服務(wù)將上述匹配出來的異常文件列表,發(fā)送給對應(yīng)系統(tǒng)負(fù)責(zé)人
詳細(xì)代碼如下:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 第三方 SMTP 服務(wù)
mail_host = "smtp.****.com" # 設(shè)置服務(wù)器
mail_user = "*****@****.com" # 用戶名
mail_pass = "*****" # 口令
sender = '*****@****.com'
receivers = ['***@***.com'] # 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱
message = MIMEText('Python 郵件發(fā)送測試...', 'plain', 'utf-8')
message['From'] = Header("Python自動化檢查", 'utf-8')
message['To'] = Header("系統(tǒng)負(fù)責(zé)人", 'utf-8')
subject = '某系統(tǒng)近2個月版本內(nèi)網(wǎng)域名檢查結(jié)果'
message['Subject'] = Header(subject, 'utf-8')
try:
 smtpObj = smtplib.SMTP()
 smtpObj.connect(mail_host, 25) # 25 為 SMTP 端口號
 smtpObj.login(mail_user, mail_pass)
 smtpObj.sendmail(sender, receivers, message.as_string())
 print
 "郵件發(fā)送成功"
except smtplib.SMTPException:
 print
 "Error: 無法發(fā)送郵件"

  至此,該項目所需要的所有模塊均已開發(fā)完畢,最后只需要根據(jù)自己的實際需求將上述各個模塊組合在一起運(yùn)行即可

由于本人是python初學(xué)者,代碼基本是按照順序執(zhí)行的方式進(jìn)行設(shè)計的,以能實現(xiàn)最終目的為主,為對代碼結(jié)構(gòu)、性能等合理性做出特別考慮

最后利用nohup命令,實現(xiàn)最終腳本的后臺運(yùn)行

總結(jié)

到此這篇關(guān)于通過Python掃描代碼關(guān)鍵字并進(jìn)行預(yù)警的文章就介紹到這了,更多相關(guān)Python掃描代碼關(guān)鍵字預(yù)警內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python GUI編程學(xué)習(xí)筆記之tkinter事件綁定操作詳解

    Python GUI編程學(xué)習(xí)筆記之tkinter事件綁定操作詳解

    這篇文章主要介紹了Python GUI編程學(xué)習(xí)筆記之tkinter事件綁定操作,結(jié)合實例形式分析了Python GUI編程tkinter事件綁定常見操作技巧與使用注意事項,需要的朋友可以參考下
    2020-03-03
  • 如何利用Python將字典轉(zhuǎn)為成員變量

    如何利用Python將字典轉(zhuǎn)為成員變量

    當(dāng)我們在Python中寫一個class時,如果有一部分的成員變量需要用一個字典來命名和賦值,此時應(yīng)該如何操作呢?這篇文章主要給大家介紹了關(guān)于如何利用Python將字典轉(zhuǎn)為成員變量的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Python中創(chuàng)建數(shù)值列表的4種方法總結(jié)

    Python中創(chuàng)建數(shù)值列表的4種方法總結(jié)

    在Python中列表(List)是一種有序、可變的數(shù)據(jù)類型,被廣泛用于存儲和處理多個元素,這篇文章主要給大家介紹了關(guān)于Python中創(chuàng)建數(shù)值列表的4種方法,需要的朋友可以參考下
    2024-05-05
  • Python元素集合的列表切片

    Python元素集合的列表切片

    這篇文章主要介紹了Python元素集合的列表切片,列表是元素的集合,列表的這些子集稱為切片,下面違章圍繞Python列表切片得相關(guān)資料展開學(xué)習(xí)內(nèi)容,需要的朋友可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-02-02
  • python3去掉string中的標(biāo)點(diǎn)符號方法

    python3去掉string中的標(biāo)點(diǎn)符號方法

    今天小編就為大家分享一篇python3去掉string中的標(biāo)點(diǎn)符號方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python切換pip源兩種方法(解決pip?install慢)

    Python切換pip源兩種方法(解決pip?install慢)

    這篇文章主要給大家介紹了關(guān)于Python切換pip源兩種方法(解決pip?install慢),我總結(jié)的這幾種更換pip源的常用方式,希望可以幫助您成功配置國內(nèi)源,解決安裝Python包速度慢的問題,需要的朋友可以參考下
    2023-11-11
  • python實現(xiàn)清屏的方法

    python實現(xiàn)清屏的方法

    這篇文章主要介紹了python實現(xiàn)清屏的方法,涉及Python調(diào)用系統(tǒng)命令的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 使用OpenCV實現(xiàn)仿射變換—縮放功能

    使用OpenCV實現(xiàn)仿射變換—縮放功能

    這篇文章主要介紹了使用OpenCV實現(xiàn)仿射變換—縮放功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Python網(wǎng)絡(luò)編程詳解

    Python網(wǎng)絡(luò)編程詳解

    這篇文章主要介紹了Python網(wǎng)絡(luò)編程詳解,涉及具體代碼示例,還是挺不錯的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • 在pycharm中文件取消用 pytest模式打開的操作

    在pycharm中文件取消用 pytest模式打開的操作

    這篇文章主要介紹了在pycharm中文件取消用 pytest模式打開的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09

最新評論