簡單監控liunx中cpu、內存、磁盤及發送郵件參考

 shell腳本

vim jk.sh  #命名腳本名
 
 
  
#!/bin/bash
 
  
time=`date "+%Y-%m-%d %H:%M:%S"`      #定義時間
 
  
echo "$time"
 
  
echo  "     警告!!!!!!"
 
  
 
 
  
cpu_info(){
 
  
cpu_free=`top -i -c -bn 1| grep Cpu | awk -F ":" '{print $2}' | awk -F "," '{print $4}' | awk -F " " '{print $1}'| awk -F "." '{print $1}'`  #取cpu空閒值
 
  
echo "cpu剩餘量:" $cpu_free"%"
 
  
}
 
  
 
 
  
mem_info(){
 
  
mem_used=` free -h | grep Mem | awk -F ":" '{print $2}' | awk -F " " '{print $6}'`   #取可用內存值
 
  
echo "---mem:"
 
  
echo "可用內存爲:"$mem_used
 
  
}
 
  
 
 
  
disk_info(){
 
  
disk_total=`df -h | grep root | awk -F " " '{print $2}'`          #取磁盤總量
 
  
disk_used=`df -h | grep root | awk -F " " '{print $3}'`         #取磁盤使用量
 
  
disk_per=`df -h | grep root | awk -F " " '{print $5}'`        #取磁盤使用量率
 
  
echo "---disk:"
 
  
echo "磁盤總量:"$disk_total
 
  
echo "磁盤使用量:"$disk_used
 
  
echo "磁盤使用率:"$disk_per
 
  
}
 
  
 
 
  
cpu=`top -i -c -bn 1| grep Cpu | awk -F ":" '{print $2}' | awk -F "," '{print $4}' | awk -F " " '{print $1}'| awk -F "." '{print $1}'`
 
  
mem=` free -m | grep Mem | awk -F ":" '{print $2}' | awk -F " " '{print $6}'|sed s/M//g`  #把使用內存中的去M掉便於比較
 
  
disk=`df -h | grep root | awk -F " " '{print $5}'|sed s/%//g`   #把硬盤使用率中的百分號去掉便於比較
 
  
war_cpu=10   #定義cpu閾值值   
 
  
war_mem=100 #定義可用內存閾值100M
 
  
war_disk=90   #定義磁盤使用率閾值
 
  
 
 
  
main(){
 
  
if [ "$cpu" -lt $war_cpu  ] || [ "$mem" -lt $war_mem ] ||[ "$disk" -gt $war_disk ]  
 
  
#cpu剩餘空間小於10   可用內存小於100M  磁盤使用率大於90
 
  
then
 
  
echo "---cpu:"  
 
  
cpu_info
 
  
mem_info
 
  
disk_info
 
  
echo ".........等待處理........."
 
  
 
 
  
else
 
  
echo "-------------"
 
  
echo "Server's fine"
 
  
echo "-------------"
 
  
 
 
  
fi
 
  
}
 
  
main
 

 

                                                                                  

用python實現發郵件

#導入模塊
import paramiko
import smtplib
from email.mime.text import MIMEText
from email.header import Header
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 
def send_mail(message):
    sender = 'aa1052995312@163.com'
    receiver = ['ruri9999@163.com']
    subject = '報警'
    username = 'aa1052995312@163.com'
    password = '123456'
    msg = MIMEText(message, 'plain', 'utf-8')
    msg['Subject'] = Header(subject, 'utf-8')
    msg['From'] = 'warning<aa1052995312@163.com>'
    msg['To'] = "ruri9999@163.com"
    smtp = smtplib.SMTP()
    smtp.connect('smtp.163.com')
    smtp.login(username, password)
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()
 
def server():
    ssh.connect("192.168.88.31", 22, 'root', '123', timeout=3)  #鏈接192.168.88.31 端口22 用戶root 密碼123
    stdin, stdout, stderr = ssh.exec_command('./jk.sh ' )   #在linux中執行./jk.sh
    msg = stdout.read().decode('utf_8')
    war = "警告"
    while True:
        if war in msg:
            send_mail(msg)
            print('發送成功!!!')
            break
        else:
            print("server's find.")
            break
server()
相關文章
相關標籤/搜索