shell实战三案例

环境

  • centos 7.5
  • 邮件服务配置完成

邮件配置可参考如下
linux下使用自带mail发送邮件(超简单)

案例一

案例目标

  • 检测服务器系统版本号同时截取本机IP
  • 主线任务:检测服务器磁盘使用率是否大于小于15%
  • 无论大于15%还是小于%15都需要第一时间发送邮件到qq邮箱
  • 案例的意义:我们运维工程师最重要的一点就是保证服务器的正常运行,磁盘当然是服务器是否正常运行的必备保障,当硬盘的可用空间小到一定程度时,就会造成系统的交换文件、临时文件缺乏可用空间,降低了系统的运行效率,所以监控磁盘就成了运维人员所必须掌握的一门小知识
#!/bin/bash
#系统版本号
os_version=$(cat /etc/redhat-release)
echo "系统版本号是:${os_version}"
#本机服务器IP地址
ip_addr=$(ifconfig ens33 |awk '/netm/{print $2}')
echo "本机服务器IP地址是:${ip_addr}"
#磁盘使用率>15%
gt_15=($(df -TH |awk -F '[ |%]+' '/xfs/{
     
     if($6>15)print $1}'))
        for i in ${gt_15[@]}
        do
                echo "disk used is gt 15%"|mail -s "disk>15%" [email protected]

        done
#磁盘使用率<15%
lt_15=($(df -TH |awk -F '[ |%]+' '/xfs/{
      
      if($6<15)print $1}'))
        for i in ${lt_15[@]}
        do
                echo "disk used is lt 15"|mail -s "disk is ok" [email protected]
        done

案例二

案例目标 可参考HTTP状态码

  • 判断一个网站的状态码,并截取状态码
  • 判断状态码是否为200
  • url为对应的网址
  • 测试正确网址可以使用www.baidu.com
  • 异常网址可以用www.linuxpm.com
#!/bin/bash
url=(www.baidu.com www.linuxpm.com)
for url in ${url[@]}
do
        result=$(curl -I -o /dev/null -s -w %{
     
     http_code} $url)
:<<`!`
        -I:http头部信息
        -o:输出到指定位置
        -s:屏蔽输出
        -w:定制输出格式
`!`
        if [ $result -eq 200 ];then
                echo "$url is ok"|mail -s "url_健康info" [email protected]
        else
                echo "$url is error"|mail -s "url_错误info" [email protected]
        fi
done

案例三

案例目标 : 防止文件被误删除
案例导图 :在代码下方

#!/bin/bash
while true
do
        read -ep "输入您要删除的文件:<<" file
        echo "您要删除的文件是: $file"
        read -p "您确定要删除吗?Y/y|N/n:<<" cmd1
        case $cmd1 in
                Y|y)
                        if [ -e $file ];then
                                count=$(rpm -qa |grep rsync|wc -l)
                                if [ $count -ne 0 ];then
                                        echo "rsync已经安装"
                                else
                                        echo "rsync未安装,即将安装"
                                        yum -y install rsync &> /dev/null
                                        echo "rsync安装完成"
                                fi
                                        echo "判断服务rsync是否运行"
                                        netstat -nltp|grep 873 &> /dev/null
                                if [ $? -eq 0 ];then
                                        echo "rsync服务已运行"
                                else
                                        echo "rsync服务未运行,即将运行"
                                        systemctl start rsyncd &> /dev/null
                                        echo "rsync服务运行成功"
                                fi
                                #开始备份文件
                                backup_dir="/usr/local/src/backup"
                                [ -d ${backup_dir} ] || mkdir ${backup_dir}
        case $cmd1 in
                Y|y)
                        if [ -e $file ];then
                                count=$(rpm -qa |grep rsync|wc -l)
                                if [ $count -ne 0 ];then
                                        echo "rsync已经安装"
                                else
                                        echo "rsync未安装,即将安装"
                                        yum -y install rsync &> /dev/null
                                        echo "rsync安装完成"
                                fi
                                        echo "判断服务rsync是否运行"
                                        netstat -nltp|grep 873 &> /dev/null
                                if [ $? -eq 0 ];then
                                        echo "rsync服务已运行"
                                else
                                        echo "rsync服务未运行,即将运行"
                                        systemctl start rsyncd &> /dev/null
                                        echo "rsync服务运行成功"
                                fi
                                #开始备份文件
                                backup_dir="/usr/local/src/backup"
                                [ -d ${backup_dir} ] || mkdir ${backup_dir}
                                #开始执行备份操作
                                rsync -av $file ${backup_dir}
                                echo "input Y:<< delete"
                                echo "input y:<< no delete"
                                read -p "您真的狠心删除我吗?(Y|y):<<" cmd2
                                case $cmd2 in
                                        Y)
                                                echo "start delete $file"
                                                rm -rf $file
                                                echo "文件恢复路径:<< ${backup_dir}"
                                                ;;
                                        y)
                                                echo "no delete"
                                                echo "就知道您不会抛弃我的~_~"
                                                exit
                                                ;;
                                esac
                        else
                                echo "start touch $file"
                                touch $file
                                echo "show $file"
                                ls -l $file
                                exit
                        fi
                        ;;
                N|n)
                        echo "no delete $file"
                        echo "退出"
                        exit
                        ;;
        esac
done

防止误删除文件思维导图
在这里插入图片描述
shell三案例到此结束~ _ ~

猜你喜欢

转载自blog.csdn.net/qq_49296785/article/details/108705480
今日推荐