すべての現在のトンネルで特定のSSHトンネルを効率的に探しますか?

すべての現在のトンネルで特定のSSHトンネルを効率的に探しますか?

ポート22でOpenSSHを使用してログインし、ポート3306と80度トンネルしているとします。

ポート80は、3つのポート(22、3306、80)の両方でトンネリングされる最後のポートです。

$ sudo ssh UWU@IP -L 80:localhost:80

ポート80トンネルプロセスのみを終了する方法は?

私は最善の方法は、どのような方法でポート80トンネルを自動ターゲットにすることだと思います。もう一つの方法は、3つのトンネルのうち最後のトンネルを目指すことです。

私がこれを尋ねる理由は次のとおりです。

ps aux | grep sshプロセスを見つけて具体的に終了できますが、自動的には実行されません。

ベストアンサー1

問題のあるプロセスのPIDを見つけるには、構文を使用することをお勧めします$!

ステージ1:プロセスを開始しますが、今回は任意のPID値を保持する変数を使用します。

sudo ssh blah@blah 80:localhost:80 & arbpid=$!

2番目のステップ:トンネルを作成するときにのみ変数を保存する場合は、arbpidそれを使用してスクリプトの最後でプロセスを終了できます。

kill $arbpid

つまり、ここで行うことは、SSHトンネルに任意のタグ(変数とその値)をタグ付けすることです。その後、それを終了ターゲットとして指定します。


コマンドと変数の間に & 記号があります。 Unixコマンドの後の単一のアンパサンドと同様に、これはアンパサンドの前のコマンドが別のサブプロセス(バックグラウンド)で実行されるのに対し、2番目のコマンド(この場合は変数の生成)は現在のプロセス(フォアグラウンド)で実行されます。仕事。

おすすめ記事