Bash 脚本中有许多并发的 SSH 命令?

Bash 脚本中有许多并发的 SSH 命令?

我的 Bash-Foo 不够强。目前我有类似的东西

function update_project {
  for i in server-{1,2,3,4} ; do
    echo "Updating $i"
    ssh $i "git pull"
  done
}

服务器数量每天都在增长,而且每次更新大约需要 20 秒,因此我想同时执行请求。最好的方法是什么,同时仍然能够看到输出(例如失败的合并)?

答案1

你为什么要重新发明轮子?只需使用卡皮斯特拉诺部署您的项目代码。它专为此目的而设计,并在所有配置的机器上并行运行部署。

答案2

函数将允许您向任意数量的机器发送命令,并让您观察输出。

答案3

有多个并行的 ssh 项目。查找 pssh。

答案4

如果你有 GNU Parallelhttp://www.gnu.org/software/parallel/安装后你可以这样做:

parallel --slf hostfile --nonall --tag git pull

您可以通过以下方式轻松安装 GNU Parallel:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

观看 GNU Parallel 的介绍视频以了解更多信息: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

相关内容