StartTomcat.pypython
import subprocess as t import time, os, requests, sys WEB_IP = '127.0.0.1:8080' # WEB_IP = '127.0.0.1' REDIS_IP = '127.0.0.1' REDIS_PORT = '18890' # 獲取當前時間 def getCurrentTime(): return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) # 檢查 Tomcat def check_Tomcat(): var = t.getoutput("ps -ef | grep tomcat") success = False for line in var.split("\n"): if '/usr/local/tomcat7/conf/logging.properties' in line: success = True if not success: return False # 判斷是否是 Tomcat僵死掉 try: requests.get("http://" + WEB_IP + "/dsideal_yy/adminlogin/captchaText", timeout=1) except requests.exceptions.ConnectTimeout: return False except requests.exceptions.Timeout: return False # 判斷驗證碼是否是能正常生成? r = requests.get("http://" + WEB_IP + "/dsideal_yy/adminlogin/captchaText") if r.status_code != 200: return False else: # 下載圖片 try: r = requests.get("http://" + WEB_IP + "/dsideal_yy/adminlogin/captchaImage?text=" + r.json()['text']) with open('/usr/local/software/picture.jpg', 'wb') as file: file.write(r.content) # 用完就刪除了吧 os.remove('/usr/local/software/picture.jpg') return True except Exception as err: print('Tomcat檢查發現異常:' + str(err)) return False # 從新啓動Tomcat def RestartTomcat(): # 準備了十秒的緩衝時間,用來將mysql和ssdb進行啓動應該足夠了 # 開始關閉Tomcat cmd = '/usr/local/tomcat7/bin/shutdown.sh' os.system(cmd) print('正在關閉Tomcat...') # 休息5秒 cmd = "sleep 5" os.system(cmd) # 查找Tomcat進程並殺死進程 cmd = "ps -ef | grep 'tomcat' | grep -v grep| awk '{print $2}' | xargs kill -9" os.system(cmd) print('正在殺掉Tomcat...') # 休息5秒 cmd = "sleep 5" os.system(cmd) # 從新啓動Tomcat cmd = '/usr/local/tomcat7/bin/startup.sh' os.system(cmd) while True: r = check_Tomcat() if r: print('恭喜!Tomcat啓動成功!') break else: time.sleep(1) print('Tomcat還在啓動中,請稍等...' + getCurrentTime()) if __name__ == "__main__": # 建立工做目錄 path = '/usr/local/software/CloudPlatformUtil/AutoDeployment/' if not os.path.exists(path): cmd = 'mkdir -p ' + path os.system(cmd) # 正常的工做目錄 if os.path.abspath('.') != path: print('系統檢查到不是在規定的目錄下執行,正在拷貝到正確目錄下!') print(sys.argv[0]) cmd = 'rm -rf ' + path + (sys.argv[0]).split('/')[-1] print(cmd) os.system(cmd) cmd='cp '+os.path.abspath('.')+'/'+sys.argv[0]+' '+path+sys.argv[0] print(cmd) os.system(cmd) # 執行測試命令 cmd = 'redis-cli -h ' + REDIS_IP + ' -p ' + REDIS_PORT + ' set a 1' while True: result = t.getoutput(cmd) if 'Connection refused' in result: print('redis鏈接被拒絕,服務沒有開啓!正在開啓...' + getCurrentTime()) cmd2 = 'service redis start' os.system(cmd2) time.sleep(1) elif 'LOADING Redis is loading the dataset in memory' in result: print('redis正在加載中...' + getCurrentTime()) time.sleep(1) else: print('redis正常!' + getCurrentTime()) break # 從新啓動Tomcat RestartTomcat() # 替換 /usr/local/tomcat7/bin/startup.sh # 檢查cron中是否存在本程序的進程 # 將文件讀取到內存中 foundDownload = False with open('/etc/rc.local', "r", encoding="utf-8") as f: lines = f.readlines() # 刪除某行 with open("/etc/rc.local", "w", encoding="utf-8") as f_w: for line in lines: if "/usr/local/tomcat7/bin/startup.sh" in line: continue if "python3 /usr/local/software/CloudPlatformUtil/AutoDeployment/StartTomcat.py" in line: continue f_w.write(line) # 增長某行 with open('/etc/rc.local', 'a') as f: f.write('python3 /usr/local/software/CloudPlatformUtil/AutoDeployment/StartTomcat.py' + '\n') print('恭喜,全部動做成功完成!')