Shell脚本批量运维多台住宅服务器集群

家里有多台树莓派、旧笔记本或者NAS?
每次升级、查硬盘、重启都要一台台ssh上去敲命令,时间一长确实够累。
用Shell脚本批量处理,把重复工作交给一行循环,一次写完,后面只用跑一条命令就行。

这篇文章面向完全没写过脚本的朋友,整个过程就四步:配好SSH钥匙、写好主机清单、写一个循环脚本、验证一下。
不需要复杂工具,纯自带命令。

第一步:准备好服务器列表和SSH钥匙

批量管理的前提是能无密码登录每台机器。
先在本地电脑生成密钥对:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""

接着把公钥复制到每台服务器上。
假如你有三台机器IP为192.168.1.10、192.168.1.11、192.168.1.12,执行:

ssh-copy-id 192.168.1.10
ssh-copy-id 192.168.1.11
ssh-copy-id 192.168.1.12

按提示输入密码。
免密登录配置完成后,在本地新建一个文本文件 servers.txt,把IP一行一个写进去:

192.168.1.10
192.168.1.11
192.168.1.12

如果服务器用域名或别名也可以,只要ssh能直接连上。

第二步:写一个能跑通所有机器的循环脚本

打开终端,用 vim 或 nano 创建一个脚本文件,比如 batch.sh:

#!/bin/bash
# 批量执行命令到多台服务器
# 使用方法:bash batch.sh "uptime"

SERVERS=$(cat servers.txt)
CMD="$*"

if [ -z "$CMD" ]; then
    echo "用法: $0 <命令>"
    exit 1
fi

for HOST in $SERVERS
do
    echo "========== $HOST =========="
    ssh "$HOST" "$CMD"
done

保存后赋予执行权限 chmod +x batch.sh。
现在你可以用一条命令查看所有机器的运行时间和磁盘:

./batch.sh "uptime && df -h | grep /$"

输出会按服务器分组显示,一目了然。
如果想批量更新系统包,可以换成:

./batch.sh "sudo apt update && sudo apt upgrade -y"

新手最容易踩的四个坑

  1. SSH免密不生效:检查 ~/.ssh/authorized_keys 权限是否 600,父目录 .ssh 权限是否 700。可以用 ssh -v 192.168.1.10 看报错。
  2. sudo命令需要交互:部分机器sudo需要输入密码。解决办法是在每台服务器上给当前用户配置免密码sudo:编辑 /etc/sudoers 文件,添加 youruser ALL=(ALL) NOPASSWD: ALL。
  3. 主机名解析超时:如果 /etc/hosts 未配置,ssh会尝试DNS查询导致延迟。建议服务器数量少时直接使用IP,或在本地hosts文件里写死。
  4. 循环中断不想等:如果某台机器ssh连不上,脚本会卡住。可以加个超时参数:ssh -o ConnectTimeout=5 "$HOST" "$CMD"。

验证:一键检查所有机器状态

写一个简单的验证脚本 check_all.sh:

#!/bin/bash
./batch.sh "echo '主机名: $(hostname)' && free -h | grep Mem && uptime -p"

执行后,你会看到类似输出:

========== 192.168.1.10 ==========
主机名: server1
Mem:        3.7G total,  1.2G used
up 2 weeks, 3 days
========== 192.168.1.11 ==========
主机名: media-nas
Mem:        7.6G total,  2.0G used
up 1 month, 5 days
...

如果所有机器都正常返回信息,说明批量脚本已经生效。
以后需要执行任何命令,直接调用 ./batch.sh "你的命令" 就行。

如果服务器集群数量超过几十台,建议加上日志记录和错误重试,但上面的基础脚本已经够家庭环境使用。
高频操作还可以通过 crontab 定时跑一遍,比如每天早上自动检查磁盘空间,如果超过80%就发邮件提醒。

如果你在配置过程中遇到SSH连接失败或sudo卡住的情况,优先回看“避坑”部分的命令和权限设置,大多数问题都可以解决。
掌握这个思路后,再配合scp、rsync等工具,管理几百台住宅服务器也会很轻松。

分享到:
上一篇
防盗链Nginx规则保护跨境产品原图
下一篇
防火墙iptables完整安全规则拦截扫描
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意