Bash脚本 - 如何在连接另一个之后运行ssh

时间:2016-06-12 11:43:14

标签: linux bash ssh

我没有强大的硬件,因此我无法同时运行多个ssh隧道,或者它会使CPU负载过高,我的目标是运行ssh连接另一个隧道后连接,如果我的某个ssh断开连接,则重新连接,所以基本上它是这样的:

while true; do
if (1st ssh isn't connected); then
   connect the first ssh
elif (1st ssh is finally connected); then
   run the second ssh
elif (2nd ssh is finally connected); then
   run the 3rd ssh
fi
sleep 1
done

问题是ssh隧道的数量不断变化,有时用户想要运行3个ssh隧道,有时甚至5个,看起来这样就可以运行脚本了:

mytunnel.sh -a [number of tunnels they wanna run]

我正在考虑for loop,但我无法弄清楚如何在for loop内写出来。请帮帮我。

2 个答案:

答案 0 :(得分:0)

以下是您可以使用的for循环:

#!/usr/local/bin/bash

LOOP=$1
for (( c=1; c<=$LOOP; c++ ))
do
      echo "$c "
done

echo替换为您的命令和LOOP,使用您将使用的任何命令行参数。此示例读取命令行arg 1(即$ 1)。

执行示例:

enter image description here

答案 1 :(得分:0)

棘手。不幸的是,我不认为ssh在连接隧道时会返回任何内容,也不会在连接断开时立即退出。

相反,您可能要做的是使端口监视器定期检查端口是否正在接受连接并生成新的ssh隧道(可能会终止旧的ssh进程),如果不是。