2026年运维实战:提升十倍效率的自动化脚本分享

在2026年的今天,尽管云原生、Kubernetes和AIOps技术已经高度普及,但传统的服务器运维与自动化脚本依然是我们排查问题、保障业务连续性的基石。面对动辄上千节点的混合云架构,手动执行命令早已无法满足业务对敏捷与稳定的要求。将重复性工作封装为高可用、可复用的脚本,依然是每一位运维工程师的核心竞争力。

本文将分享三个在2026年运维实战中高频使用的Shell与Python脚本,涵盖主机巡检、日志异常检测与证书监控,帮助大家从繁琐的日常中解放双手。

一、 Shell脚本:全维度主机健康巡检与报告生成

尽管Prometheus等监控体系已非常完善,但在新机器上线、故障初步定位或无监控Agent的边缘节点上,一个一键式巡检脚本依然具有不可替代的价值。该脚本能快速抓取CPU、内存、磁盘I/O及网络连接状态,并输出标准化报告。


#!/bin/bash
# 2026主机健康巡检脚本
# 用法: ./health_check.sh > report_$(date +%F).log

echo "========================================="
echo " 系统健康巡检报告 - $(date '+%Y-%m-%d %H:%M:%S')"
echo "========================================="

# 1. 系统基础信息
echo -e "\n[系统信息]"
echo "主机名: $(hostname)"
echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
echo "内核版本: $(uname -r)"
echo "运行时间: $(uptime -p)"

# 2. CPU与负载检查
echo -e "\n[CPU与负载]"
echo "CPU核心数: $(nproc)"
echo "当前负载: $(cat /loadavg | awk '{print $1, $2, $3}')"
LOAD_THRESHOLD=4.0
CURRENT_LOAD=$(cat /proc/loadavg | awk '{print $1}')
if (( $(echo "$CURRENT_LOAD > $LOAD_THRESHOLD" | bc -l) )); then
  echo "⚠️ 警告: 当前1分钟负载 $CURRENT_LOAD 超过阈值 $LOAD_THRESHOLD"
else
  echo "✅ 负载状态正常"
fi

# 3. 内存使用检查
echo -e "\n[内存使用]"
free -h | awk 'NR==1{printf "%-10s %-10s %-10s %-10s\n",$1,$2,$3,$4} NR==2{printf "%-10s %-10s %-10s %-10s\n",$1,$2,$3,$4}'
MEM_USAGE=$(free | awk '/Mem/{printf("%.1f"), $3/$2*100}')
if (( $(echo "$MEM_USAGE > 85" | bc -l) )); then
  echo "⚠️ 警告: 内存使用率 ${MEM_USAGE}% 超过85%"
fi

# 4. 磁盘空间检查
echo -e "\n[磁盘空间]"
df -h | awk 'NR==1 || /^\/dev\// {print}'
DISK_USAGE=$(df -h / | awk 'NR==2{print $5}' | sed 's/%//g')
if [ "$DISK_USAGE" -gt 80 ]; then
  echo "⚠️ 警告: 根分区使用率 ${DISK_USAGE}% 超过80%"
fi

实战价值:此脚本无需任何依赖,可在任何Linux发行版上直接运行。结合Ansible或SSH批量分发工具,可以在5分钟内完成百台主机的状态摸底。

二、 Python脚本:智能日志异常提取与Webhook告警

2026年的微服务架构产生了海量的日志。传统的人工grep不仅效率低下,且容易遗漏关键错误。以下Python脚本通过正则匹配与频率统计,能够智能识别日志中的异常激增(如同一错误在1分钟内出现超10次),并通过Webhook将告警推送到飞书/钉钉。


import re
import time
from collections import defaultdict
import requests

# 配置项
LOG_FILE = "/var/log/app/service.log"
ERROR_PATTERN = re.compile(r'\[(ERROR|CRITICAL)\].*?(Exception|Timeout|Refused)', re.IGNORECASE)
TIME_WINDOW = 60  # 统计时间窗口(秒)
THRESHOLD = 10    # 触发告警的阈值
WEBHOOK_URL = "https://open.feishu.cn/open-apis/bot/v2/hook/your-2026-token"

def send_alert(error_dict):
    """发送Webhook告警"""
    content = "