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

Tallulah ·
更新时间:2024-11-10
· 500 次阅读

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

在这里插入图片描述


作者:浩翰Redamancy



监控 系统监控 liunx 系统 shell编程 shell 脚本 ftp

需要 登录 后方可回复, 如果你还没有账号请 注册新账号