5 parallel-processing ssh bash
我有一个脚本,通过ssh连接在几台不同的机器上触发远程命令.脚本如下:
for server in list; do
echo "output from $server"
ssh to server execute some command
done
Run Code Online (Sandbox Code Playgroud)
这个问题显然是时间,因为它需要建立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
Run Code Online (Sandbox Code Playgroud)
更新:启动子shell:
for server in list; do
(echo "output from $server"; ssh user@server "command"; echo End $server) &
done
wait
echo All subshells finished
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12176 次 |
| 最近记录: |