スクリプトファイルがあります./run_app.sh
これには次のものが含まれます:
ssh -L 8888:localhost:8888 ubuntu@address
./run_website.sh # it should be executed locally
ただし、リモートマシンで2行目を実行しようとします。実は自分のパソコンで走らせたいです。何か案が?
こんにちは、スーパーユーザーへようこそ。
ssh -L 8888:localhost:8888 ubuntu@address
の後、スクリプトはリモートサーバー上にあります。
フラグ-fN
をssh
に渡すことができます(-f
はforkをバックグラウンドに、-N
はコマンドを実行しない)。
次に、トンネルが確立された後、スクリプトはマシンの次の行で実行を再開します。
欠点は、スクリプトが終了した後でも、ssh
接続がバックグラウンドに残ることです。
回避策は、-N
フラグを破棄し、リモートサーバーでsleep 10
を実行することです。
ssh -f -L 8888:localhost:8888 ubuntu@address sleep 10
このように、トンネルが使用されていない場合、run_website.sh
が終了したとき、またはスクリプトがトンネルを使用しない場合(つまり、何らかの理由で失敗した場合)に10秒後に、トンネルは自動的に切断されます。
これは明らかに、run_website.sh
がトンネルを使用していることを前提としています。
トンネルを自動的に終了する必要がない場合は、先に進んで-fN
を使用してください。
ssh -fN -L 8888:localhost:8888 ubuntu@address
必要に応じて、後でssh
プロセスを強制終了できます。