【python自動化運維】paramiko和smtplib模塊:檢查MySQL從庫主從同步狀態、備份情況併發送郵件通知

#!/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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章