案例子任务一、编写系统监控脚本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服务器哟~
此致完成~