You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Shell的for语句通过SSH批量访问多台机器?

批量SSH访问多台机器的for循环实现

你可以通过两种实用的bash for循环写法完成批量访问需求:

方法1:用seq生成带前导零的序号

for num in $(seq -w 1 30)
do
  ssh "machine${num}" cat /data/restart.sh
done
  • seq -w 参数会自动生成宽度统一的数字(01、02…30),完美匹配你的机器命名格式
  • 通过machine${num}拼接出完整的机器主机名

方法2:用bash大括号扩展(更简洁)

如果你的bash版本支持(绝大多数现代bash都兼容),可以直接用大括号扩展生成所有机器名:

for host in machine{01..30}
do
  ssh "$host" cat /data/restart.sh
done

这种写法无需单独处理数字变量,直接生成machine01到machine30的完整主机列表

额外实用提示

  • 建议先配置免密SSH登录,否则每台机器都会要求输入密码,批量操作会极其繁琐
  • 若想并行执行以加快速度,可把命令放到后台,最后等待所有任务完成:
    for host in machine{01..30}
    do
      ssh "$host" cat /data/restart.sh &
    done
    wait
    
  • 如果需要保存每台机器的输出结果,可以重定向到单独文件:
    for host in machine{01..30}
    do
      ssh "$host" cat /data/restart.sh > "${host}_restart.sh"
    done
    

内容的提问来源于stack exchange,提问作者AnonymousKKYY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:41:19