批量远程重启服务器!让你的运维更高效——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://hqyman.cn/post/9330.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~