家用住宅主机Linux Shell批量脚本运维多住宅主机

家里有多台Linux小主机(比如树莓派、旧笔记本刷Linux、NAS等)时,每次逐台登录执行命令非常低效。
用Shell脚本批量推送指令,能大幅节省重复操作的时间。
本文从零开始,教你如何搭建一套可复用的批量脚本环境。

准备工作:选一台跳板机并配好免密登录

你需要一台常开的主机作为跳板机(通常是主路由或一台NUC),其他所有要管理的主机都从这个跳板机SSH连接。

  1. 在跳板机上生成SSH密钥对(如果已有可跳过):
   ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519

按回车默认路径,不设密码。

  1. 将公钥复制到每一台被管主机:
   ssh-copy-id user@host_ip

需要输入一次每个主机的登录密码。
成功后再用 ssh user@host_ip 验证是否直接登录。

  1. 创建主机列表文件 /home/you/hosts.txt,每行一个IP地址或主机名:
   192.168.1.101
   192.168.1.102
   192.168.1.103

如果端口不同,也可以写成 192.168.1.101:2222,脚本里再拆分。

编写批量执行Shell脚本

核心思路:用 while read 循环读取列表,对每个主机执行你需要的命令。

以下示例检查所有主机的磁盘使用情况:

#!/bin/bash
# 批量检查磁盘使用率
HOSTS_FILE="/home/you/hosts.txt"
USER="your_username"
COMMAND="df -h | grep -v tmpfs"

while IFS= read -r host; do
    echo "========== $host =========="
    ssh -o ConnectTimeout=5 "$USER@$host" "$COMMAND"
    if [ $? -ne 0 ]; then
        echo "[ERROR] $host 连接失败或命令执行异常" >&2
    fi
done < "$HOSTS_FILE"

将上面内容保存为 batch_check.sh,执行 chmod +x batch_check.sh,然后 ./batch_check.sh 即可看到每台主机的磁盘空间。

关键点:COMMAND 变量替换成你想批量运行的任何命令,例如 uptimeapt update && apt upgrade -ysystemctl restart nginx 等。
如果需要多行命令,最好先写成独立的远程脚本再复制执行。

避坑指南:新手最容易翻车的地方

  • SSH密钥权限:私钥文件必须为600权限:chmod 600 ~/.ssh/id_ed25519,否则SSH会拒绝使用。
  • 首次连接指纹确认:如果被管主机之前没有被跳板机连接过,脚本会卡住等待手动确认。解决方法有两个:一是在 ~/.ssh/config 添加 StrictHostKeyChecking no(安全风险低的内网可用),二是先在每台主机手动执行一次SSH连接确认指纹。
  • 命令执行结果:不是你期望的返回值:如果某台主机连接超时,脚本会继续跑下一台。给你代码里已经加了退出码判断,但最好在 COMMAND 后加 || echo "[FAIL]" 更明确。
  • 长时间命令:如果批量进行 apt upgrade,建议加上 DEBIAN_FRONTEND=noninteractive 避免交互弹窗。

效果验证:确认所有主机都执行成功

  1. 手动检查输出:脚本标准输出应显示正常结果,错误输出(stderr)重定向到屏幕或日志。可以统一追加日志:
   ./batch_check.sh 2>> error.log
  1. 如果被管主机数量少,也可以在各主机上检查对应服务状态:
   systemctl is-active your_service
  1. 利用 wc -l 统计输出行数,与主机列表行数对比,排查未响应的主机。

拓展思路:让脚本更灵活

  • 并发执行:在循环中加入 & 后台运行,最后加 wait
  • 传递参数:将脚本改造成接受参数,比如要执行的命令通过第一个参数传入。
  • 记录日志:按主机名和时间命名日志文件,方便追溯。

如果你管理的主机数量增长到几十台,可以在此基础上套用 pdshansible 等工具。
但Shell脚本始终是最轻量、零依赖的方案,适合家用机房场景。

分享到:
上一篇
外贸站宝塔面板网站服务器挖矿进程手动查杀清理步骤
下一篇
跨境独立站宝塔面板服务器宝塔面板Docker部署AI网关
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意