Liunx Shell编程入门----编写系统监控脚本与FTP探测脚本

1. 编写系统监控脚本sysmon.sh

使该脚本实现: 监控系统中内存、cpu、磁盘的占用率

1.1 命令解释

cat /proc/meminfo

在这里插入图片描述

/proc/meminfo是了解Linux系统内存使用状况的主要接口

我们最常用的freevmstat等命令就是通过它获取数据的 ,/proc/meminfo所包含的信息比free等命令要丰富得多

Linux bc 命令

bc 命令是任意精度计算器语言,通常在linux下当计算器用。

它类似基本的计算器, 使用这个计算器可以做基本的数学运算。

提示系统没有bc命令,需要yum install bc 安装

监控内存使用率

#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格式化为方便查看的格式

[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
#disk_used_rate
Location=/dev/sda1 # 这里根据自己的磁盘位置修改
Disk_Used_Rate=$(df -h | grep $Location | awk '{print $5}')
echo $Disk_Used_Rate

监控cpu使用率

#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 脚本代码

# 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探测脚本

# 输入想要查询的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

在这里插入图片描述

发布了140 篇原创文章 · 获赞 50 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43442524/article/details/104814018
今日推荐