2026年运维实战:提升效率的自动化脚本分享与解析
2026年运维实战:提升效率的自动化脚本分享与解析
步入2026年,随着企业IT架构向云原生与混合云的深度演进,运维团队面临的系统复杂度与数据量呈指数级增长。在这个算力与微服务交织的时代,传统的人工巡检与手动干预已无法满足业务对高可用与敏捷性的要求。AIOps虽然大放异彩,但扎实的自动化脚本依然是运维工程师手中的“瑞士军刀”,是构建智能运维底座的基石。今天,我们将分享三个在2026年日常运维中高频使用、经过生产环境检验的Shell与Python自动化脚本,帮助大家解放双手,提升效能。
一、 Shell脚本:批量集群日志清理与核心指标秒级巡检
在微服务架构下,节点动辄成百上千,日志文件的膨胀是导致磁盘空间耗尽的常见隐患。下面的Shell脚本结合了日志清理与系统健康巡检,通过SSH密钥认证,可批量在目标节点执行,适合作为Cron定时任务每日运行。
#!/bin/bash
# 2026年集群日志清理与巡检脚本
# 用法: ./cluster_inspect.sh nodes_list.txt
NODE_LIST=$1
LOG_DIR="/var/log/app"
RETAIN_DAYS=7
REPORT_FILE="/tmp/inspect_report_$(date +%Y%m%d).log"
echo "===== 2026-$(date +%Y-%m-%d) 集群巡检报告 =====" > $REPORT_FILE
while read -r node; do
echo "正在检查节点: $node" | tee -a $REPORT_FILE
ssh -o ConnectTimeout=5 $node << EOF >> $REPORT_FILE 2>&1
# 1. 清理7天前的旧日志
echo "[日志清理] 清理 $LOG_DIR 下 ${RETAIN_DAYS} 天前的日志..."
find $LOG_DIR -type f -name "*.log" -mtime +${RETAIN_DAYS} -delete
find $LOG_DIR -type f -name "*.gz" -mtime +${RETAIN_DAYS} -delete
# 2. 核心指标提取
echo "[系统负载] $(uptime)"
echo "[内存使用] $(free -h | grep Mem | awk '{print \$3/\$2 * 100.0\"%\"}')"
echo "[磁盘使用] $(df -h / | tail -1 | awk '{print \$5}')"
echo "----------------------------------------"
EOF
done < "$NODE_LIST"
echo "巡检完毕,报告已生成: $REPORT_FILE"
实战解析:该脚本利用find命令的-mtime参数精准删除过期日志,避免误删活跃文件。通过ssh << EOF实现远程命令块执行,结合awk提取负载、内存与磁盘的核心百分比。在2026年的容器化环境中,虽然日志多由EFK栈收集,但宿主机基础组件的日志管理依然离不开此类轻量级脚本。
二、 Python脚本:基于Webhook的智能磁盘告警与自动化扩容联动
2026年的告警体系早已不再局限于邮件和短信,与飞书、钉钉、Slack等IM的Webhook深度联动已成为标配。此Python脚本使用psutil库监控磁盘,当达到阈值时,不仅发送富文本告警,还可通过API触发云厂商的自动扩容流程。
#!/usr/bin/env python3
# 2026年智能磁盘监控与Webhook告警脚本
import psutil
import requests
import json
from datetime import datetime
WEBHOOK_URL = "https://open.feishu.cn/open-apis/bot/v2/hook/your-2026-token"
THRESHOLD = 85.0
def send_alert(partition, usage):
"""发送飞书Webhook告警"""
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
msg = {
"msg_type": "interactive",
"card": {
"header": {
"title": {"tag": "plain_text", "content": "⚠️ 磁盘空间告警 (2026监控)"},
"template": "red"
},
"elements": [
{"tag": "div", "text": {"tag": "lark_md", "content": f"**时间**: {now}\n**分区**: {partition}\n**使用率**: {usage}%\n**建议**: 已触发自动扩容策略"}}
]
}
}
try:
requests.post(WEBHOOK_URL, json=msg, timeout=5)
except Exception as e:
print(f"告警发送失败: {e}")
def auto_scale_disk(partition):
"""模拟调用2026年云原生API进行磁盘扩容"""
print(f"正在调用API扩容分区: {partition} ...")
# 实际生产中此处为Cloud Provider SDK调用
pass
def check_disk():
for part in psutil.disk_partitions(all=False):
if part.mountpoint in ['/', '/data']:
usage = psutil.disk_usage(part.mountpoint).percent
if usage >= THRESHOLD:
send_alert(part.mountpoint, usage)
auto_scale_disk(part.mountpoint)
if __name__ == "__main__":
check_disk()
实战解析:psutil打破了系统壁垒,跨平台获取指标极其优雅。脚本的核心在于闭环思维——从发现异常、通知干系人到执行自愈动作。在2026年的云环境中,监控与自愈是分不开的,将告警与自动化扩容脚本绑定,能将MTTR(平均恢复时间)降至分钟级。
三、 Shell脚本:SSL证书过期自动化巡检
随着HTTPS的全面普及与零信任架构的落地,证书管理是运维不可忽视的雷区。证书过期导致的业务中断往往影响恶劣。此脚本无需登录远端服务器,直接通过TCP握手提取证书有效期。
#!/bin/bash
# 2026年SSL证书过期巡检脚本
DOMAINS=("pay.company.com" "api.company.com" "sso.company.com")
ALERT_DAYS=30
CURRENT_EPOCH=$(date +%s)
for domain in "${DOMAINS[@]}"; do
# 使用openssl获取证书过期时间,兼容2026年常见的TLS 1.3
EXPIRY_DATE=$(echo | openssl s_client -servername $domain -connect $domain:443 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
if [ -z "$EXPIRY_DATE" ]; then
echo "[$domain] 无法获取证书信息,请检查网络或域名解析!"
continue
fi
EXPIRY_EPOCH=$(date -d "$EXPIRY_DATE" +%s)
DIFF_DAYS=$(( (EXPIRY_EPOCH - CURRENT_EPOCH) / 86400 ))
if [ "$DIFF_DAYS" -le "$ALERT_DAYS" ]; then
echo "⚠️ 告警: $domain 证书将在 $DIFF_DAYS 天后过期 (过期日: $EXPIRY_DATE)"
# 此处可接入企微/钉钉告警API
else
echo "✅ 正常: $domain 证书有效期剩余 $DIFF_DAYS 天"
fi
done
实战解析:该脚本巧妙利用了openssl s_client的非交互模式,在外部直接探测业务端口,更贴近真实用户访问路径。通过时间戳差值计算剩余天数,过滤出即将过期的风险证书,是2026年安全合规巡检的必备利器。
结语
在2026年的技术浪潮中,运维自动化不再是简单的脚本堆砌,而是将业务理解、系统架构与工具链深度融合的工程艺术。以上三个脚本仅是抛砖引玉,真正的效能提升来源于每一位运维人对重复性工作的敏锐嗅觉与自动化改造的决心。让机器做机器该做的事,让人去解决更有价值的架构问题,这才是新时代运维的破局之道。