2016-06-12 3 views
0

私は強力なハードウェアを持っていないので、同時に複数のsshトンネルを実行することはできません。目標は、別の1が接続された後、SSHトンネルを実行し、私の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の中にそれを書く方法を考え出すことができません。私を助けてください。

#!/usr/local/bin/bash 

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

は、あなたが使うことになるどんなコマンドライン引数を使用してコマンドやLOOPとechoを交換してください:ここで

答えて

0

は、あなたが使用することができますforループです。この例では、コマンドラインarg1(つまり$ 1)が読み込まれます。

例の実行:

enter image description here

0

トリッキー。残念ながら、トンネルに接続するときにsshが何も返さないとは思わないし、接続が壊れたときにすぐに終了することもない。

代わりに、ポートが接続を受け入れていることを定期的にチェックし、新しいsshトンネルを生成する(おそらく古いsshプロセスを強制終了する)ポートモニターを作成することです。

関連する問題