Shell编程(二)

案例子任务一、编写系统监控脚本sysmon.sh

要求:在/root/bin目录下编写脚本,监控系统中内存、cpu、磁盘的占用率;赋予脚本文件执行权限,执行脚本检查效果;设置计划任务每分钟执行一次脚本。

话不多说,直接上代码。。。

#/bin/bash
# memory used rate
Memory(){    #定义函数
        LoadMemory=$(cat /proc/meminfo | awk '{print $2}')    #获取整个参数
        Total=$(echo $LoadMemory | awk '{print $1}')    #获取总资源
        Free1=$(echo $LoadMemory | awk '{print $2}')    #获取空闲资源
        Free2=$(echo $LoadMemory | awk '{print $3}')
        Free3=$(echo $LoadMemory | awk '{print $4}')
        Used=`expr $Total - $Free1 - $Free2 - $Free3`    #获取已占用的资源
        Used_Rate=`expr  $Used/$Total*100 | bc -l`    #计算比率
        Memory_Used_Rate=`expr  $Used_Rate/1 | bc`    
}
Memory    #执行函数
if [ $Memory_Used_Rate -gt 30 ]        #判断
        echo "内存报警:"$Memory_Used_Rate%
        echo "内存使用率:$Memory_Used_Rate%" | mail -s "内存告警" root    #发送邮件
if
--------------------------------------------------------------------------------------------------------------------------------------------------
#/bin/bash
# disk used rate
Disk(){    #定义函数
        Location=/dev/sda    #定义磁盘位置
        Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}')    #获取已使用的比例
        Disk_Used=$(echo $Disk_Used_Rate | awk '{print int($0)}')    #获取已经使用的数字方便if判断
}
Disk    #执行函数
if [ $Disk_Used -gt 10 ]    #判断
        echo "磁盘报警:"$Disk_Used%
        echo "磁盘使用率:$Disk_Used%" | mail -s "内存告警" root    #发送邮件
if
--------------------------------------------------------------------------------------------------------------------------------------------------
#/bin/bash
# cpu used rate
Cpu(){    #定义函数
        Log=$(cat /proc/stat | grep 'cpu ' | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}')    #信息分隔获取参数
        Free=$(echo $Log | awk '{print $4}')    #获取空闲资源
        Total=$(echo $Log | awk '{print $1+$2+$3+$4+$5+$6+$7}')    #获取整个资源
        Cpu_Used=`expr $Total - $Free`    #计算已经使用资源
        Cpu_Used_Rate=`expr  $Cpu_Used/$Total*100 | bc -l`    #判定比例
}
Cpu    #执行函数
if [ $(echo $Cpu_Used_Rate| awk '{print int($0)}') -gt 10 ]    #判断
        echo "CPU报警:"$Cpu_Used_Rate%
        echo "cpu使用率:$Cpu_Used_Rate%" | mail -s "内存告警" root    #发送邮件
if

需要每个一分钟执行一次,需要安装定时执行的工具软件。

1.安装crontab

  命令:yum install cixie-cron  

          yum install crontabs

2.开启crontab服务

service crond start //启动服务 
           service crond stop //关闭服务 
           service crond restart //重启服务 

查看crontab服务状态:service crond status 

3.设置脚本

命令行输入:crontab -e 进入后编写想要执行的脚本

执行情况!发现会发送邮件,呈现执行结果。

 

案例子任务二、编写FTP探测脚本scanhost.sh

 要求:在/root目录下编写脚本,扫描给定IP网段中的ftp服务器;赋予脚本执行权限,扫描某个网段

直接上干货!

#!/bin/sh
#执行命令时候,只需要追加输入特定的IP地址即可
IP1=`echo $1 |awk -F"." '{print $1}'`    #获取IP前三位
IP2=`echo $1 |awk -F"." '{print $2}'`    #获取IP下一个三位
IP3=`echo $1 |awk -F"." '{print $3}'`    #获取IP再下一个三位
IP4=$(echo $1 |awk -F"." '{print $4}')    #获取IP最后三位

for ((i=1; i<=254; i++))
do
        echo $i    #显示扫描的个数
        wget  ftp://$IP1.$IP2.$IP3.$i &>null    #命令测试是否能连接,在后台显示测试过程
        if [ $? -eq 0 ]    #如果能连接,就执行
                then echo "$IP1.$IP2.$IP3.$i is open"    #执行成功显示开放的IP地址
        fi
done

直接赋予执行权限,执行后,会逐步检测整个网段的地址,检测ftp开放情况,会自动显示测试网段的开放地址。

由于测试的响应事件比较慢,大家可以根据自己的情况,设置适当缩短响应时间,首先测试的网段需要有一个可访问的ftp服务器哟~

 此致完成~

原文地址:https://www.cnblogs.com/jake-jin/p/12488742.html