【问题标题】:Shell Script to SSH to Multiple Remote Machines and Leave a Command Running用于通过 SSH 连接到多个远程计算机并让命令运行的 Shell 脚本
【发布时间】:2022-02-07 03:52:29
【问题描述】:

我正在编写一个分布式应用程序,我需要使用ssh 在多台机器中生成一些进程。问题是这个命令阻塞了终端,所以我需要这个命令作为一个进程运行。这样我就可以继续发出命令并转移到另一台机器上。

例如

命令类似于:

make run

此命令阻塞了我的终端,但我想通过 ssh 连接到另一台机器并运行此命令和其他命令。

目前我正在使用这个不起作用的脚本:

#!/bin/bash

HOSTS=(ex1 ex2)
COMPILE_SCRIPT="make"
RUN_CHEFS="make run &"
CLIENT_SCRIPT="make client"

# Compile the project
ssh "${HOSTS[0]}" "${COMPILE_SCRIPT}"

# Run the command in the hosts
for HOSTNAME in ${HOSTS[*]} ; do
  ssh "${HOSTNAME}" "${RUN_CHEFS}"
done

ssh "${HOSTS[0]}" "${CLIENT_SCRIPT}"

【问题讨论】:

    标签: bash shell ssh remote-access


    【解决方案1】:

    您可以选择使用mussh 等实用程序,它可以让您执行以下操作:

    mussh -l username -m -h host1 host2 host3 -c "make run"
    

    -m 标志表示同时运行。

    【讨论】:

    • 这是一个很好的答案,但我没有安装mussh,也没有在这些机器上安装它的权限。 :'(
    • mussh 是一个 shell 脚本,所以你不必以“root”身份安装任何东西。从上面的链接下载 tar.gz 包并找到“mussh”脚本...
    • 我会为这种事情寻找 ansible
    猜你喜欢
    • 1970-01-01
    • 2021-09-04
    • 2018-09-14
    • 2012-12-05
    • 2015-08-05
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    相关资源
    最近更新 更多