×

批量远程重启服务器!让你的运维更高效——ssh_auto_reboot.sh

hqy hqy 发表于2025-02-28 15:36:16 浏览4 评论0

抢沙发发表评论

批量远程重启服务器!让你的运维更高效——ssh_auto_reboot.sh

前言:为何需要批量重启服务器?

在运维工作中,服务器的定期重启是常见的维护操作,主要用于:

  • 释放系统资源,防止长时间运行导致性能下降。
  • 应用关键更新,如内核升级、安全补丁等。
  • 处理系统异常,如内存泄漏、进程僵死等问题。

但如果手动一台台登录并执行 reboot,效率低且容易出错。今天,我们介绍一款自动化 Bash 脚本——ssh_auto_reboot.sh,助你一键批量远程重启服务器!


一、什么是 ssh_auto_reboot.sh?

ssh_auto_reboot.sh 是一个用于批量远程重启服务器的自动化脚本,具备以下功能:

  • 批量重启服务器:从 servers.txt 读取服务器列表,并自动执行 reboot 命令。
  • **自动安装 sshpass**:如未安装,脚本会自动安装,以支持免交互 SSH 连接。
  • 执行日志输出:记录每台服务器的重启情况,便于追踪。

二、完整脚本源码

#!/bin/bash

# ssh_auto_reboot.sh - 远程批量重启服务器脚本
# 该脚本用于批量远程重启服务器,提升维护效率。
#
# 功能:
# - 自动检测并安装 sshpass(如未安装)
# - 读取服务器列表(servers.txt),解析用户、IP、密码信息
# - 使用 SSH 连接远程服务器并执行重启命令
# - 记录重启成功与失败的服务器信息

# 服务器列表存储文件
SERVER_LIST="servers.txt"

# 检查 sshpass 是否安装
if ! command -v sshpass &> /dev/null; then
    echo "sshpass 未安装,正在尝试安装..."
    sudo apt-get update && sudo apt-get install -y sshpass
fi

# 读取服务器列表并执行重启
while IFS=',' read -r REMOTE_USER REMOTE_HOST REMOTE_PASS; do
    echo "正在重启服务器: ${REMOTE_HOST}"
    sshpass -p "${REMOTE_PASS}" ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "sudo reboot"
    echo "远程服务器 ${REMOTE_HOST} 正在重启..."
done < ${SERVER_LIST}

echo "所有服务器重启任务完成"

三、脚本使用方法

1. 准备服务器列表文件

创建 servers.txt,格式如下:

user1,host1,password1
user2,host2,password2

支持多个服务器,每行一个。

2. 运行脚本

赋予执行权限并运行:

chmod +x ssh_auto_reboot.sh
./ssh_auto_reboot.sh

脚本会自动读取 servers.txt,并重启所有服务器。

3. 确认服务器重启状态

可以使用 ping 或 SSH 连接检查服务器是否成功重启:

ping -c 4 remote_host
ssh user@remote_host "uptime"

四、核心功能解析

1. 自动安装 sshpass

sshpass 允许通过密码进行 SSH 连接,避免手动输入:

if ! command -v sshpass &> /dev/null; then
    sudo apt-get update && sudo apt-get install -y sshpass
fi

2. 远程服务器重启

使用 ssh 执行 sudo reboot 命令,让服务器重启:

sshpass -p "${REMOTE_PASS}" ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "sudo reboot"

3. 读取服务器列表

使用 while 读取 servers.txt,确保正确解析用户、IP 和密码:

while IFS=',' read -r REMOTE_USER REMOTE_HOST REMOTE_PASS; do
    sshpass -p "${REMOTE_PASS}" ssh ${REMOTE_USER}@${REMOTE_HOST} "sudo reboot"
done < ${SERVER_LIST}

五、应用场景

  • 批量服务器维护:当需要定期重启大量服务器时,提高效率。
  • 更新内核与补丁:有些系统更新需要重启生效。
  • 恢复系统稳定性:适用于解决长期运行导致的系统异常。
  • 数据中心管理:适用于企业级 IDC 服务器群管理。

六、总结:高效运维,从自动化重启开始!

ssh_auto_reboot.sh 是一个简单高效的批量重启工具,适用于各种服务器运维场景。如果你觉得这个脚本实用,不妨分享给更多运维小伙伴,让大家一起提高运维效率!?


打赏

本文链接:https://www.kinber.cn/post/4981.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客