#!/usr/bin/python3
#author 老闆你再這樣我要刪庫了
#Mark:2018/9/20初稿
import paramiko
import time
import smtplib
from email.mime.text import MIMEText
time1=time.strftime("%H%M%S")
time2=time.strftime("%y/%m/%d-%H:%M:%S")
time3=time.strftime("%d")
ssh_hostname='##從庫IP'
ssh_username='##ssh登錄賬號'
##已做免密碼登錄處理,ssh-copy-id
sshc1=paramiko.SSHClient()
sshc1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshc1.connect(hostname=ssh_hostname,username=ssh_username)
def sendmail(mail_content,mail_subject):
smtp_server="##發件郵件服務器"
smtp_user="##發件郵箱賬號"
smtp_password="##發件郵箱密碼"
from_mail="##發件人"
to_mail="##收件人"
message1=MIMEText(mail_content,'plain','utf-8')
message1['From']=from_mail
message1['To']=to_mail
message1['Cc']="##抄送人"
message1['Subject']=mail_subject
smtp1=smtplib.SMTP(smtp_server,'25')
smtp1.login(smtp_user,smtp_password)
smtp1.sendmail(from_mail,to_mail,message1.as_string())
smtp1.close()
##凌晨2點判斷備份是否正常
if time1=="020000":
stdin,stdout,stderr=sshc1.exec_command('ls -lah /backup/data/|tail -n 1') ##查看備份路徑下文件情況
backup1=stdout.read().decode(encoding='utf-8',errors='ignore').split()
file_size=backup1[4]
file_time=backup1[6]
file_name=backup1[8]
mail_content="檢查時間:"+time2+"\n\n"+"最新數據庫文件:\n\n"+file_name+" ("+file_size+"GB)"
if file_time==time3:
mail_subject="車貸系統生產數據庫備份成功"
else:
mail_subject="車貸系統生產數據庫備份失敗"
sendmail(mail_content,mail_subject)
##查看主從同步狀態
else:
stdin, stdout, stderr = sshc1.exec_command('mysql -u##備份賬號 -p##賬號密碼 -e"show slave status\G"')
slave_s=stdout.read().decode(encoding='utf-8',errors='ignore').replace(' ','').split('\n')
if slave_s[11] != "Slave_IO_Running:Yes" or slave_s[12] != "Slave_SQL_Running:Yes":
mail_content="檢查時間:"+time2+"\n\n"+"Slave status:\n"+slave_s[11]+"\n"+slave_s[12]+"\n\n"+slave_s[38]
mail_subject="車貸生產從庫異常"
sendmail(mail_content,mail_subject)
sshc1.close()