shell脚本:日常巡检

mac2026-04-13  3

以下内容仅为提供思路

对于运维来说,每天对所管理的服务器进行一次以上的巡检是最基本的工作,当然,天天free、df的敲键盘很麻烦,这时候最好写一个日常巡检的脚本,辛苦一天,轻松一年

巡检脚本有两种思路,一种是当你想亲眼看一看系统状况的时候,每台服务器都亲自执行一遍这个脚本;另一种是将所有功能封装,执行脚本并不会反馈给你任何数据,只是在当有些参数超过你设定的阈值时发送报警邮件 下面我们两个都来写个模板

第一种

#!/bin/bash menu(){ cat <<EOF +------------------------------------------------+ | 日常巡检脚本 | | 1.查看文件系统使用率 | | 2.查看内存使用率 | | 3.查看系统负载 | | 4.统计系统连接数 | | 5.统计系统进程数 | | 6.统计当前磁盘分区信息 | | 7.按Enter退出 | +------------------------------------------------+ EOF } menu while true do echo -en "请输入你要查看的内容:" read action if [ -z "$action" ];then echo "See you later" break fi case $action in 1) df -h ;; 2) free -h ;; 3) uptime ;; 4) ss -tan | grep -i "estab" | wc -l ;; 5) ps aux | grep -v "grep" | wc -l ;; 6) fdisk -l ;; esac done

这个脚本非常简陋,但是基本的框架已经有了,接下来就可以根据这个框架添加自己需要的功能

第二种

第二种思路用ansible的playbook更好实现,不过如果你非要写shell脚本然后用ansible的scripts模块执行也行

#!/bin/bash ip=ifconfig | grep broadcast | awk '{print $2}' # 文件系统 df=`df -h | grep -v '文件系统' | tr -s ' ' | tr ' ' :` for i in $df do j=`echo $i | awk -F: '{print $5}' | awk -F% '{print $1}'` k=`echo $i | awk -F: '{print $1}'` if [ $j -gt 80 ] then echo "文件系统:$k 使用量已达$j" | mail -s "报警:服务器$ip文件系统使用量超过阈值" ********@163.com fi done # 还可以写各种要监控的参数,我这里就不再写了,大家可以随意添加自己想要查看的信息
最新回复(0)