加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash脚本并行ssh远程命令

发布时间:2020-12-15 22:25:06 所属栏目:安全 来源:网络整理
导读:我有一个脚本,通过ssh连接在几台不同的机器上触发远程命令.脚本如下: for server in list; doecho "output from $server"ssh to server execute some commanddone 这个问题显然是时间,因为它需要建立ssh连接,fire命令,等待答案,打印它.我想要的是让脚本尝试
我有一个脚本,通过ssh连接在几台不同的机器上触发远程命令.脚本如下:

for server in list; do
echo "output from $server"
ssh to server execute some command
done

这个问题显然是时间,因为它需要建立ssh连接,fire命令,等待答案,打印它.我想要的是让脚本尝试一次建立连接并返回echo“$server的输出”并在命令输出后立即输出,所以在列表顺序中没有必要.

我一直在谷歌上搜索一段时间,但没有找到答案.我不能在命令运行后取消ssh会话作为一个线程建议,因为我需要一个输出,我不能使用其他线程中建议的并行gnu.另外我不能使用任何其他工具,我不能在这台机器上带任何东西,只有可用的工具是GNU bash,版本4.1.2(1) – 发布.

另一个问题是这样的ssh会话有限吗?如果我只是粘贴5行左右的“ssh connect,做一些命令”它实际上什么都不做,或者只从列表中先执行. (如果我粘贴3-4行就可以了).谢谢

解决方法

你试过这个吗?

for server in list; do
  ssh user@server "command" &
done
wait
echo finished

更新:启动子shell:

for server in list; do
  (echo "output from $server"; ssh user@server "command"; echo End $server) &
done
wait
echo All subshells finished

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读