【问题标题】:Bash script - How to run ssh after another one is connectedBash 脚本 - 如何在另一个连接后运行 ssh
【发布时间】:2016-10-12 22:21:04
【问题描述】:

我没有强大的硬件,所以我不能同时运行多个 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 中编写它。请帮帮我。

【问题讨论】:

    标签: linux bash ssh


    【解决方案1】:

    这是一个您可以使用的for 循环:

    #!/usr/local/bin/bash
    
    LOOP=$1
    for (( c=1; c<=$LOOP; c++ ))
    do
          echo "$c "
    done
    

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

    示例执行:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-11-27
        • 1970-01-01
        • 2013-10-01
        • 2023-01-13
        • 1970-01-01
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多