項目背景提要
最近公司經常有測試,產品,開發人員需要我幫忙查看服務器上面發送的短信驗證碼來完成工作上的一些需求。我們的短信驗證碼由我們後臺程序發出,調用第三方短信平臺發送,這中間我們會將短信發送內容記錄到日誌文件,最終是否能發送成功是第三方短信平臺來決定的。這時候如果他們填寫的是一個不存在的手機號碼的話是無法接收到短信,但日誌文件裏面有記錄,如果手工來完成這樣的工作,我需要進入到服務器,再使用grep來過濾。過程不多,但次數多了也有點繁瑣。最終考慮使用一個簡單的程序來實現讓他們通過Web可以直接查看。
需要實現我這樣的需求,我需要從前端傳入一個唯一參數到後臺,再進行處理返回,有考慮過自己寫前端,通過提交來實現,但相對較複雜。最後決定使用Python之Flask框架來實現,簡單,快捷,方便,只需要幾行代碼即可搞定。
實現步驟
首先服務器需要有Python環境,我的爲CentOS,所以默認是有Python環境
安裝Flask模塊
pip install flask
創建項目index.py(任何位置都可以)
from flask import Flask from subprocess import Popen, PIPE app = Flask(__name__) @app.route('/<phone_number>') def index(phone_number): info = Popen(["grep", phone_number, "/home/gogen/nohup.out"], stdout=PIPE) info = info.stdout.readlines() return info[-1] if __name__ == '__main__': app.run(host="0.0.0.0")
說明:
<phone_number> 是我們在URI中要傳入的參數,爲電話號碼
index 這個函數的作用就是使用shell命令根據電話號碼過濾出所有相關的記錄,並生成一個列表,然後返回列表中最後一條信息
啓動項目
nohup python index.py &
說明:項目啓動成功後默認監聽5000端口
測試
最後通過Web訪問結果如下