shell腳本3
阿新 • • 發佈:2018-08-23
郵件服務 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 ~]# ./chkversion.sh
內核版本為:3.10
**編寫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
內核版本為: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