1. 编写系统监控脚本sysmon.sh
使该脚本实现: 监控系统中内存、cpu、磁盘的占用率
1.1 命令解释
cat /proc/meminfo
/proc/meminfo
是了解Linux系统内存使用状况的主要接口
我们最常用的free
、vmstat
等命令就是通过它获取数据的 ,/proc/meminfo
所包含的信息比free
等命令要丰富得多
Linux bc
命令
bc 命令是任意精度计算器语言,通常在linux下当计算器用。
它类似基本的计算器, 使用这个计算器可以做基本的数学运算。
提示系统没有bc命令,需要yum install bc
安装
监控内存使用率
1 2 3 4 5 6 7 8 9 10
| #memory_used_rate 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` echo $Memory_Used_Rate%
|
监控磁盘占用率
使用 df
命令查看磁盘 -h
格式化为方便查看的格式
1 2 3 4 5
| [root@localhost bin]# df -h /dev/sda* 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 475M 0 475M 0% /dev /dev/sda1 1014M 160M 855M 16% /boot devtmpfs 475M 0 475M 0% /dev
|
1 2 3 4
| #disk_used_rate Location=/dev/sda1 # 这里根据自己的磁盘位置修改 Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}') echo $Disk_Used_Rate
|
监控cpu使用率
1 2 3 4 5 6 7
| #cpu_used_rate 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` echo $Cpu_Used_Rate
|
1.2 脚本代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| # Colors red='\033[31m' # 定义红色 green='\033[32m' # 定义绿色
#memory_used_rate 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`
# disk_used_rate Location=/dev/sda1 Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}')
#cpu_used_rate 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_Used_Rate=`expr $Cpu_Used_Rate/1 | bc`
echo -e "+----------------------------------------------------------------"
echo -e "${green} 内存使用率:${red}"$Memory_Used_Rate% echo -e "${green} 磁盘使用率:${red}"$Disk_Used_Rate echo -e "${green} Cpu使用率:${red}"$cpu_Used_Rate%
echo -e "+----------------------------------------------------------------" echo -e " "
|
crontab -e
进入定时系统,设置计划任务
输入:*/1 * * * * /root/bin/sysmon.sh
收到邮件:
2. 编写FTP探测脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| # 输入想要查询的ip段 IP1=`echo $1 |awk -F"." '{print $1}'` IP2=`echo $1 |awk -F"." '{print $2}'` IP3=`echo $1 |awk -F"." '{print $3}'` IP4=`echo $1 |awk -F"." '{print $4}'`
for ((i=3; i>0; i--)) do echo -e "倒数"$i"秒,开始扫描" done # 开始连接 wget ftp://$IP1.$IP2.$IP3.$IP4 &>null
# 如果连接成功 if [ $? -eq 0 ] then echo "$IP1.$IP2.$IP3.$i is open" fi
|