国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

通過Python掃描代碼關鍵字并進行預警的實現方法

瀏覽:67日期:2022-07-24 16:38:09

近期線上出現一個bug,研發的小伙伴把測試環境的地址寫死到代碼中,在上線前忘記修改,導致線上發布的代碼中使用了測試環境地址。

開發過程中雖然有各種規范制度,但是難免有粗心,與其責備不如通過技術手段將問題進行避免。

為了達到上述需求,初步想通過以下步驟來實現代碼關鍵字自動掃描告警。

Python安裝 Git安裝 GitPython安裝 定時任務配置(方案一:crontab 方案二:APScheduler) git代碼獲取 關鍵詞掃描 郵件告警

#安裝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下創建目錄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#創建軟連接,將自定目錄管理到指定目錄ln -s /usr/local/python3/bin/python3 /usr/bin/python3ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3#添加環境變量vi /etc/profileexport PATH=/usr/local/python3/bin:$PATH source /etc/profile#至此Python3安裝完畢,通過命令驗證

通過Python掃描代碼關鍵字并進行預警的實現方法

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

通過Python掃描代碼關鍵字并進行預警的實現方法

GitPython3安裝#可以采用在線安裝pip3 install GitPython#但是我這里由于網絡限制無法在線安裝,只能采用手動安裝#下載依賴包,下載地址https://pypi.org/,可以根據關鍵字smmap、gitdb進行檢索下載smmap-3.0.4.tar.gzgitdb-4.0.5.tar.gz#安裝tar -zxvf smmap-3.0.4.tar.gzcd smmap-3.0.4python3 setup.py installtar -zxvf gitdb-4.0.5.tar.gzcd gitdb-4.0.5python3 setup.py installtar -zxvf GitPython-3.1.2cd GitPython-3.1.2python3 setup.py install#安裝完畢后,可以寫一個demo.py進行驗證復制代碼from git.repo import Repoimport osdemo_git_path = ’/opt/workspace/demo’#定義本地目錄Repo.clone_from(’http://git.***.com/demo/demo_git.git’,to_path=demo_git_path, branch=’master’)復制代碼 #最終代碼庫將克隆到本地目錄(執行前將demo.py賦權) python3 demo.py

linux下配置定時任務#定時任務采用linux的crontab來實現#編輯定時任務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 是具體執行的指令 后面跟的是執行的腳本 在后面跟的是日志#編輯保存后會立即執行#查看當前正在運行的任務,本案例中已臨時注釋#crontab -l

通過Python掃描代碼關鍵字并進行預警的實現方法

原計劃使用linux的crontab進行任務調度,但是在執行GitPython命令時遇到兩個問題,即

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

通過Python掃描代碼關鍵字并進行預警的實現方法

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

SHELL=/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/root/binMAILTO=rootHOME=/

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

APScheduler安裝#這里由于網絡限制無法在線安裝,只能采用手動安裝#下載依賴包,下載地址https://pypi.org/,可以根據關鍵字pytz、six、tzlocal進行檢索下載pytz-2020.1.tar.gzsix-1.14.0.tar.gztzlocal-2.1.tar.gzAPScheduler-3.6.3.tar.gz#安裝tzlocaltar -zxvf tzlocal-2.1.tar.gzcd tzlocal-2.1python3 setup.py install#安裝sixtar -zxvf six-1.14.0.tar.gzcd six-1.14.0python3 setup.py install#安裝pytztar -zxvf pytz-2020.1.tar.gzcd pytz-2020.1python3 setup.py install#安裝APSchedulertar -zxvf APScheduler-3.6.3.tar.gzcd APScheduler-3.6.3python3 setup.py install至次APScheduler安裝完畢,寫個demo驗證下:

通過Python掃描代碼關鍵字并進行預警的實現方法

通過Python掃描代碼關鍵字并進行預警的實現方法

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

通過Python掃描代碼關鍵字并進行預警的實現方法

關鍵詞掃描利用os組件,實現對指定目錄進行遞歸掃描,將符合要求的文件擴展名.css .js .ftl .properties等文件進行逐行掃描關鍵詞掃描其實就是利用正則表達式,對要掃描的關鍵詞進行匹配,如果匹配成功則將目標文件名稱放入到異常文件列表詳細代碼如下:import osimport reproject_git_path = ’/opt/workspace/demo’cssnum = 0jsnum = 0ftlnum = 0fileList = []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);#循環打印目錄下的所有文件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服務將上述匹配出來的異常文件列表,發送給對應系統負責人詳細代碼如下:import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 第三方 SMTP 服務mail_host = 'smtp.****.com' # 設置服務器mail_user = '*****@****.com' # 用戶名mail_pass = '*****' # 口令sender = ’*****@****.com’receivers = [’***@***.com’] # 接收郵件,可設置為你的QQ郵箱或者其他郵箱message = MIMEText(’Python 郵件發送測試...’, ’plain’, ’utf-8’)message[’From’] = Header('Python自動化檢查', ’utf-8’)message[’To’] = Header('系統負責人', ’utf-8’)subject = ’某系統近2個月版本內網域名檢查結果’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 '郵件發送成功'except smtplib.SMTPException: print 'Error: 無法發送郵件'

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

由于本人是python初學者,代碼基本是按照順序執行的方式進行設計的,以能實現最終目的為主,為對代碼結構、性能等合理性做出特別考慮

最后利用nohup命令,實現最終腳本的后臺運行

總結

到此這篇關于通過Python掃描代碼關鍵字并進行預警的文章就介紹到這了,更多相關Python掃描代碼關鍵字預警內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲图片 自拍 | 综合亚洲欧美日韩一区二区 | 欧美精品伊人久久 | 日韩在线观看视频网站 | 综合久久精品 | 国产成人综合精品 | 日本久久网 | 精品欧美成人高清视频在线观看 | 国内精品视频九九九九 | 久久久黄色片 | 日本三级网站在线观看 | 免费看一区二区三区 | 初爱视频教程在线观看高清 | 亚洲福利精品一区二区三区 | 天天爱天天做天天爽天天躁 | 最新69成人精品毛片 | 热热涩热热狠狠色香蕉综合 | 亚洲一区2区三区4区5区 | 欧美成人精品动漫在线专区 | 欧美一级成人影院免费的 | 两性免费视频 | 欧美一级手机免费观看片 | av av片在线看 | 美女精品永久福利在线 | 亚洲人在线播放 | 欧美黄色a | 亚洲偷偷| 亚洲精品第一区二区三区 | 成年日韩片av在线网站 | 三级手机在线观看 | 国产亚洲欧美另类久久久 | 亚洲男人的天堂久久香蕉网 | 成人免费a视频 | 乱子伦农村xxxx视频 | 91久久国产综合精品女同国语 | 一级日韩一级欧美 | 国产亚洲自拍一区 | 999热精品这里在线观看 | 亚洲免费在线看 | 欧美人成在线 | 失禁h啪肉尿出来高h健身房 |