1. 程式人生 > >shell腳本3

shell腳本3

郵件服務 nta cpu monit free命令 shel mail -s 信息 一次

# 實驗案例一、
**編寫sysmon.sh腳本
(1)使用df命令提取出根分區的磁盤占用率,賦值給變量DUG。
(2)使用mpstat命令提取CPU使用率(需安裝sysstat軟件包),賦值給變量CUG。
(3)使用free命令提取出內存使用率,賦值給變量MUG。
(4)判斷上述監控項目是否超標,將需要告警的信息保存到/tmp/alert.txt文件。
(5)判斷/tmp/alert.txt文件是否存在,若存在則作為告警郵件發送。

[root@localhost ~]# vi /root/sysmon.sh

#!/bin/bash
#提取性能監控指標(磁盤占用、CPU使用、內存使用)
DUG=$(df -hT | grep "/$" | awk ‘{print $6}‘ |awk -F% ‘{print $1}‘)
CUG=$(expr 100 - $(mpstat | tail -1 | awk ‘{print $10}‘ | awk -F. ‘{print $1}‘))
MUG=$(expr $(free | grep "Mem" | awk ‘{print $3}‘) \* 100 / $(free | grep "Mem:" | awk ‘{print $2}‘))
#設置告警日誌文件、告警郵箱
ALOG="/tmp/alert.txt"
AMAIL="root"
#判斷是否記錄告警
if [ $DUG -gt 1 ]
then
    echo "磁盤占用率:$DUG %" >> $ALOG
fi
if [ $CUG -gt 2 ]
then
   echo "CPU使用率:$CUG %" >> $ALOG 
fi
if [ $MUG -gt 3 ]
then
   echo "內存使用率:$MUG %" >> $ALOG
fi
#斷是否發送告警郵件,最後刪除告警日誌文件
if [ -f $ALOG ]
then
   cat $ALOG | mail -s "Host Alert" $AMAIL
   rm -rf $ALOG
fi

[root@localhost ~]# chmod +x /root/sysmon.sh

***測試sysmon.sh腳本的執行情況***
(1)確認有可用的郵件服務器(如Postfix、Sendmail等),然後調低監控閾值,執行sysmon.sh腳本進行測試。

[root@localhost ~]# /root/sysmon.sh

(2)查收[email protected]的郵箱,確認告警郵件內容。

[monitor@localhost ~]$ cat /var/spool/mail/root
X-Original-To: [email protected]
……
From: [email protected] (root)
內存使用率:91 %

**設置crontab計劃任務**
(1)確認系統服務crond已經運行。

[root@localhost ~]# systemctl status crond
crond (pid  5839) 正在運行...

(2)添加crontab計劃任務配置,每半小時調用一次sysmon.sh腳本程序。

[root@localhost ~]# crontab -e
08 * * *  /root/sysmon.sh

**實驗案例二:判斷內核版本是否大於3.4**

[root@localhost ~]# vi chkversion.sh

#!/bin/bash
Mnum=$(uname -r | awk -F. ‘{print $1}‘)
Snum=$(uname -r | awk -F. ‘{print $2}‘)
if [ $Mnum -gt 3 ]
then
echo "內核版本為:$Mnum.$Snum"
elif [ $Mnum -eq 3 ] && [ $Snum -gt 4 ]
then
echo "內核版本為:$Mnum.$Snum"
else
echo "內核版本太低,無法繼續!"
fi

[root@localhost ~]# chmod +x chkversion.sh

[root@localhost ~]# ./chkversion.sh
內核版本為:3.10

實驗案例三、判斷判斷rpm包sysstat是否安裝,如果沒有安裝則自動安裝

[root@localhost ~]# vi chkinstall.sh


#!/bin/bash
rpm -q sysstat &> /dev/null
if [ $? -eq 0 ]
then
    echo "已安裝 ‘rpm -q sysstat‘"
else
    echo "未安裝,嘗試自動安裝"
    RHEL_DIR="/media/Packages/"
    if [ -d $RHEL_DIR ]
    then
        cd $RHEL_DIR
        rpm -ivh sysstat-*.rpm && echo "安裝完成。"
    else
        echo "錯誤:無法訪問光盤目錄:$RHEL_DIR"
    fi
fi

[root@localhost ~]# chmod +x chkinstall.sh
[root@localhost ~]# ./chkinstall.sh                 //未安裝時的情況
未安裝,嘗試自動安裝
Preparing...            ########################################### [100%]
   1:sysstat            ########################################### [100%]
安裝完成。
[root@localhost ~]# ./chkinstall.sh                 //已安裝時的情況
已安裝 sysstat-7.0.2-3.el5

shell腳本3