macOS 怎么在 Shell 脚本中实现对多台远程服务器的批量管理

小伟大大_6481

小伟大大_6481

2026-09-03

233人浏览

原创

macos批量管理远程服务器的核心是免密登录、循环执行与可靠机制:先用ssh-keygen生成密钥,ssh-copy-id分发公钥,再通过batch-run.sh脚本传参执行命令,支持超时、日志记录和有限并发。

macos 上用 shell 脚本批量管理多台远程服务器,核心是“免密 + 循环 + 可靠执行”,不是靠图形界面或第三方工具凑数。系统自带的 ssh、scp 和基础 shell 功能完全够用,关键在于配置扎实、脚本健壮、逻辑清晰。

确保 SSH 免密登录可用

这是所有批量操作的前提——macOS 默认装了 OpenSSH 客户端,但必须提前打通信任链:

  • 在 Mac 上生成密钥(如未生成过):ssh-keygen -t rsa -b 4096,一路回车即可
  • 准备服务器列表文件 servers.txt,每行格式为:用户名@IP地址[:端口],例如:
    admin@192.168.1.10
    root@10.0.20.5:2222
  • 用循环分发公钥:
    while read host; do ssh-copy-id "$host"; done <br>遇到提示时输入一次密码,后续就不再需要
  • 验证是否生效:ssh admin@192.168.1.10 uptime,不输密码能返回结果即成功

写一个可复用的批量命令执行脚本

避免每次改命令都重写逻辑,封装成带参数的脚本更省心:

macOS Automator Services
macOS Automator Services

部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...

下载
  • 新建文件 batch-run.sh,开头加解释器和错误控制:
    #!/bin/bash<br>set -e -o pipefail
  • 支持传入命令作为参数:
    CMD="${1:-'hostname'}"<br>if [ $# -lt 1 ]; then echo "用法: $0 '要执行的命令'"; exit 1; fi
  • 逐台执行并标记结果:
    while read host; do<br>  echo "--- $host ---"<br>  ssh -o ConnectTimeout=5 "$host" "$CMD" 2>/dev/null || echo "[失败] $host"<br>done 
  • 赋予执行权限:chmod +x batch-run.sh,运行:./batch-run.sh "df -h | grep /dev/sda1"

批量上传文件并远程执行

常见需求:推脚本 → 设权限 → 运行。把两步合成一个流程更稳妥:

  • 先用 scp 传文件(支持通配符):
    for host in $(cat servers.txt); do scp deploy.sh "$host:/tmp/"; done
  • 再统一执行:
    for host in $(cat servers.txt); do ssh "$host" "chmod +x /tmp/deploy.sh && /tmp/deploy.sh"; done
  • 进阶写法:用单条 ssh 把本地脚本内容直接传过去执行(适合小脚本):
    cat local-script.sh | while read host; do ssh "$host" 'bash -s'

提升稳定性和可观测性

生产环境不能只看“有没有输出”,得知道“哪台挂了、为什么挂”:

  • 加超时和重试(简单版):ssh -o ConnectTimeout=3 -o BatchMode=yes "$host" "$CMD"
  • 记录每台执行日志:
    ssh "$host" "$CMD" > "log/$host.log" 2>&1 || echo "$host failed" >> error.log
  • 并发执行(谨慎使用):用 wait 控制并发数,例如同时跑 4 台:
    count=0; while read host; do ((count++ % 4 == 0)) && wait; ssh "$host" "$CMD" &; done

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

macos

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2752

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

916

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

829

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2496

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4632

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Miniconda官方安装文档
Miniconda官方安装文档

共0课时 | 0人学习

HBuilderX macOS 安装手册
HBuilderX macOS 安装手册

共0课时 | 0人学习