ローカルコマンド実行中にのみトンネルを開く

ローカルコマンド実行中にのみトンネルを開く

リモートサーバーへのトンネルを必要とするスクリプトがあります。このような:

ssh -fNL 8080:localhost:80 my_server

その後、トンネルをどのように閉じることができますか?ローカルスクリプト終わる?

上記の例は、私が試した組み合わせの1つです。私はSSH呼び出しをブロックし、リモートコマンドを実行し、「sleep」を使用してトンネルを自動的に閉じる方法を見てきましたが、スクリプトの実行中にのみトンネルを提供する方法を望みます。

私の最後のアプローチは、sshをバックグラウンドにフォークしてスクリプトの終了時に終了するようにすることでしたが、上記のコマンドを使用すると、スクリプトを終了した後でもsshプロセスがまだ存在します。また、バックグラウンドSSHを手動で終了するためにPIDを取得する方法も研究中です。

ベストアンサー1

ただ使用

function atexit() {
  kill $TUNNEL_PID
}
trap atexit EXIT
ssh -nNL 8080:localhost:80 my_server &
TUNNEL_PID=$!

(つまり、ssh自体をバックグラウンドで通知しないでください。通常のバックグラウンドジョブとして実行し、pidを保存してください。)

おすすめ記事