广告

Linux批量关机脚本编写指南:从零基础到实战运维的完整教程

1) 准备工作:从零基础到可执行的第一步

1.1 Linux与Shell基础

在开始编写Linux批量关机脚本之前,掌握Linux常用命令与Shell脚本基础是必备前提。你需要了解常用工具如cd、ls、grep、sed、awk、ssh,以及bash的变量、流程控制与函数等概念。

此外,建立无密码SSH登录环境可以提升自动化的稳定性,避免人工输入口令造成的阻塞。建议在受控的测试环境中先尝试,确保对生产环境不会造成影响。

Linux批量关机脚本编写指南:从零基础到实战运维的完整教程

2) 设计思路与安全策略

2.1 风险评估与权限控制

批量关机属于高风险运维操作,应仅授权的运维账户具备执行权限,并通过sudoers对关机命令进行最小化授权。

建立明确的关机窗口与回滚策略,记录每台主机的执行结果,以便事后对账和问题排查。

3) 脚本编写要点与规范

3.1 参数化、日志与回滚

脚本应具备参数化输入,以支持主机列表、关机时长、日志路径等的灵活配置。

日志与错误处理是运维脚本的核心,将输出记录到集中日志,并在失败时提供清晰的错误信息。

4) 实战案例一:基于 SSH 的批量关机脚本(简单版本)

4.1 基本实现思路

下面给出一个简单实现,逐台通过SSH执行关机命令,并对失败进行基础统计。

在实际场景中,请确保目标主机已配置无密码登录且具备相应的sudo权限。以下脚本仅用于演示简单场景的批量关机流程。

#!/bin/bash
set -euo pipefail# 目标主机列表
HOSTS=("server1" "server2" "server3")# 日志文件
LOG="/var/log/batch_shutdown.log"# 将输出同时写入日志
exec >  "$LOG" 2> &1for host in "${HOSTS[@]}"; doecho "[$(date '+%F %T')] 尝试对主机 $host 执行关机命令"ssh -o BatchMode=yes -o ConnectTimeout=10 "$host" "sudo shutdown -h now" 

5) 实战案例二:并发执行与容错(使用 GNU Parallel/pssh)

5.1 并发执行方案

为了缩短总执行时间,采用并发执行是常见做法,可以使用GNU Parallel或pssh等工具在多台主机上同时发出关机命令。

在并发场景中,保持输出日志的一致性与错误记录,并确保对单点主机的失败有明确的告警和回滚路径。

#!/bin/bash
set -euo pipefailHOSTS_FILE="/etc/batch_hosts.txt"  # 每行一个主机名或IP
LOG="/var/log/batch_shutdown_parallel.log"# 使用 GNU Parallel(需提前安装)
# -j 指定并发任务数,{} 为读入的主机名
parallel -j 20 ssh -o BatchMode=yes -o ConnectTimeout=10 {} 'sudo shutdown -h now' :::: "$HOSTS_FILE" &> "$LOG"
#!/bin/bash
set -euo pipefail# Dry-run 版本:仅输出将要执行的命令,不实际执行
DRY_RUN=1
HOSTS=("server1" "server2" "server3")LOG="/var/log/batch_shutdown_dry.log"
> "$LOG"for host in "${HOSTS[@]}"; doif [ "$DRY_RUN" -eq 1 ]; thenecho "Would shutdown: $host" | tee -a "$LOG"elsessh -o BatchMode=yes -o ConnectTimeout=10 "$host" "sudo shutdown -h now" &> /dev/null || {echo "ERROR: $host 关机失败" | tee -a "$LOG"}fi
done

6) 部署与运维落地

6.1 将脚本放入计划任务与日志治理

将脚本放在 /usr/local/bin/opt/tool,并确保可执行权限,以便统一维护。

日志治理方面,统一日志路径,如 /var/log/batch_shutdown.log,便于后续审计和告警。

# 使用 cron 每日凌晨 2 点执行
0 2 * * * root /usr/local/bin/batch_shutdown.sh >>/var/log/batch_shutdown_cron.log 2>&1

6.2 安全性与合规性考量

在企业环境中,需要完善的审计日志与变更记录,以确保关机操作可溯源并满足合规要求。将关机日志集中收集到日志管理平台是常见做法。

请确保在生产环境实施前完成审批与充分的测试,并提前通知相关方,以降低业务影响。