码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本3

时间:2018-08-23 00:30:27      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:取出   gre   程序   软件   send   3.1   bin   无法访问   print   

# 实验案例一、
**编写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)查收monitor@benet.com的邮箱,确认告警邮件内容。

[monitor@localhost ~]$ cat /var/spool/mail/root
X-Original-To: monitor@benet.com
……
From: root@benet.com (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

标签:取出   gre   程序   软件   send   3.1   bin   无法访问   print   

原文地址:http://blog.51cto.com/13468179/2163110

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!