Shell脚本应用(二)实验文档

一、条件测试操作

1、文件测试

(1)测试目录/media是否为目录,$?返回值为,表示存在此目录。

如果$?返回值非,表示不存在此目录

(2)测试目录是否存在,输出结果更加直观。

输出“yes”表示该目录存在

无“yes”输出表示该目录不存在

2、整数值比较

(1)判断当前已登录的用户数,当超过5个时输出“too many”。

没有出现“too many”说明没有超过5个。

(2)判断当前可用的空闲内存(buffers/cache)大小,当低于2048MB输出具体数值。

3、字符串比较

用户输入“yes”或“no”来确认某个任务

4、逻辑测试

判断当前linux系统的内核版本是否大于2.4。

查看内核

判断

二、if条件语句

1、单分支if语句(参考书上92页的两个案例)

(1)判断挂载点目录,若不存在则自动创建

步骤:首先创建脚本vim chkmountdir.sh编辑脚本,赋予x权限并执行(详细脚本如下图)

执行并查看

(2)判断当前用户是否为root,如果不是则报错并执行“exit 1”退出脚本,不再执行其他代码。

步骤:编辑一个脚本vim /opt/chkifroot.sh并切换用户验证

创建并切换用户验证

2、双分支if语句(参考书上93和94页的两个案例)

(1)判断目标主机是否存活,显示检测结果

步骤:创建脚本vim pinghost.sh

赋予x权限并验证,注:本机地址是192.168.1.10

(2)检查vsftpd服务是否运行,若运行则列出监听地址,PID号;否则输出提示“警告,vsftpd服务不可用1”。(插入linux系统安装光盘,安装一下vsftpd软件包)。

启动vsftpd服务(service vsftpd start),运行一下脚本,查看结果。

停止vsftpd服务(service vsftpd stop),运行一下脚本,查看结果。

步骤:编写脚本vim chkftpd.sh并且要安装vsftpd服务

赋予x权限并验证

3、多分支if语句(参考书上94页的案例)

(1)根据输入的考试分数不同来区分优秀,合格,不合格三挡。

步骤:编写脚本vim gradediv.sh

赋予x权限并执行

三、书96页的实验案例

1、编写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 -h grep "/$" awk '' awk -F% '')

CUG=$(expr 100 - $(mpstat tail -1 awk '' awk -F. ''))

注明:如果系统使用中文登录,需要将上一行的$12改为$11

MUG=$(expr $(free grep "cache:" awk'') \* 100 / $(free grep "Mem:" awk ''))

#设置告警日志文件、告警邮箱

ALOG="/tmp/alert.txt"

#判断是否记录告警

if [ $DUG -gt 90 ]

then

echo"磁盘占用率:$DUG %">> $ALOG

fi

if [ $CUG -gt 80 ]

then

echo"CPU使用率:$CUG %">> $ALOG

fi

if [ $MUG -gt 90 ]

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

2、测试sysmon.sh脚本的执行情况

(1)确认有可用的邮件服务器(如Postfix、Sendmail等),然后调低监控阈值,执行sysmon.sh脚本进行测试。

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

3、设置crontab计划任务

(1)确认系统服务crond已经运行。

[root@localhost ~]# /etc/init.d/crond status

crond (pid 5839)正在运行...

(2)添加crontab计划任务配置,每半小时调用一次sysmon.sh脚本程序。

[root@localhost ~]#crontab –e

*/30 * * * * /root/sysmon.sh

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180125G0JH8D00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券