第七章:实验案例:使用Shell 脚本监控主机

文件测试

一d:测试是否为目录(Directory).

-e:测试目录或文件是否存在(Exist).

-f:测试是否为文件(File)。

-r;测试当前用户是否有权限读取〈Read)。

-w测试当前用户是否有权限写入{Write),

-x:测试是否设置有可执行《Excute)权限。

执行条件测试操作以后.通过预定义变量$?可以获得测试命令的返回状态值,从而判断该条件是否成立。例如,执行以下操作可测试目录/media/是否存在,如果返回值$?为0,表示存在此目录.否则表示不存在或者虽然存在但不是目录。

[root@Linux01 ~]# [ -d /media/ ]
[root@Linux01 ~]# echo $?
0
[root@Linux01 ~]#

若测试的条件不成立,则测试操作的返回值将不为О(通常为1)。

整数值比较

-eq:第一个数等于(Equal)第二个数。

-ne,第一个数不等于(Not Equal)第二个数。

-gt:第一个数大于(Greater Than)第二个数.

-lt:第个数小于(Lesser Than)第二个数。

-le:第一个数小于或等于(Lesser or Equal)第二个数。

-ge:第一个数大于或等于(Greater or Equal}第二个数。

实验环境

某公司随着业务的不断发展.所使用的Linux服务器也越来越多。管理员希望编写一个简单的性能监控脚本.放到各服务器中,当监控指标出现异常时发送告警邮件。

需求描述

1,编写名为sysmon , sh的Shell监控脚本。

2,监控内容包括CPU使用率.内存使用率、根分区的磁盘占用率。

3,百分比只需精确到个位.如79%、12%、23%等,

4,出现以下任-情况时告警:磁盘占用率超过90%、CPU使用率超过80%、内存使用率超过90%。

5,告警邮件通过mail命令发送到monitor@bdqn , com。

6,结合crond 服务,每半小时执行一次监控脚本。

推荐步骤

1,编写sysmon . sh脚本。

2,测试sysmon . sh 脚本的执行情况。设置crontab计划任务。

[root@Linux01 aaa]# vim sysmon.sh
#!/bin/bash
# 监控CPU
CUG=$(expr 100 - $(mpstat | tail -1 | awk '{print $12}' | awk -F. '{print $1}'))
echo "CPU使用率: $CUG %"

#监控内存
MUG=$(expr $(free | grep "Mem:" | awk '{print $3}') \* 100 / $(free | grep "Mem:" | awk '{print $2}'))
echo "内存使用率: $MUG %"

#监控硬盘
DUG=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}')
echo "磁盘占用率: $DUG%"


#设置警告日记文件,警告邮箱
#日记文件的变量
ALOG="/mnt/alert.txt"
#发送到邮箱的变量
AMAIL="root"
#判断是否记录告警
if [ $CUG -gt 20 ]
then
    echo "CPU占用率: $CUG %" >> $ALOG
fi

if [ $MUG -gt 6 ]
then
    echo "内存使用率: $MUG %" >> $ALOG
fi

if [ $DUG -gt 20 ]
then
    echo "磁盘占用率: $DUG %" >> $ALOG
fi

#判断是否发送告警邮箱,最后删除告警日志文件
if [ -f $ALOG ]
then
    cat $ALOG | mail -s "Host Alert" $AMAIL
    rm -rf $ALOG
fi

你可能感兴趣的:(Linux,高级管理,服务器,运维)