网站首页 > 技术文章 正文
前言:为何需要批量重启服务器?
在运维工作中,服务器的定期重启是常见的维护操作,主要用于:
- 释放系统资源,防止长时间运行导致性能下降。
- 应用关键更新,如内核升级、安全补丁等。
- 处理系统异常,如内存泄漏、进程僵死等问题。
但如果手动一台台登录并执行 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 是一个简单高效的批量重启工具,适用于各种服务器运维场景。如果你觉得这个脚本实用,不妨分享给更多运维小伙伴,让大家一起提高运维效率!
猜你喜欢
- 2025-05-08 DOCKER(docker安卓版下载)
- 2025-05-08 InstantID模型部署教程(insight模型)
- 2025-05-08 Dockerfile简单使用(docker-file)
- 2025-05-08 Kubernetes Linux安装指南(kubernetes安装配置)
- 2025-05-08 一个Rust小白发布生产级Rust应用的进阶之路 | 得物技术
- 2025-05-08 如何用Linux服务器搭建属于自己的云手机
- 2025-05-08 必看!WSL2 内核选项修改方法,手把手教你编译更新
- 2025-05-08 深入了解,Python 中 type 和 isinstance 的用法
- 2025-05-08 Python 开发工程师必会的 5 个系统命令操作库
- 2025-05-08 PowerDNS可视化管理工具(可视化管理ppt)
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)