Firefox と一緒に SSH トンネルを開いたり閉じたりするにはどうすればいいですか?

Firefox と一緒に SSH トンネルを開いたり閉じたりするにはどうすればいいですか?

私はプロキシサーバーに接続しています

ssh -L 2001:localhost:8888 -N myserver.com -p 443  

次にFirefoxを開きます

firefox -p "SSHProxy"

(ポート 2001 を使用するように設定された Firefox を起動します)。少しブラウズしてから Firefox を閉じ、トンネルを停止します。

私がやりたいのは、これを自動化することです。トンネルを開いてから Firefox を開きます。Firefox を閉じるときに、トンネルも閉じるようにします。

簡単なスクリプトでこれは可能ですか?

私が試してみました

ssh -L 2001:localhost:8888 -N myserver.com -p 443 && firefox -p "SSHProxy"

しかし、SSH ビットのみが実行され、Firefox は開きません。順序を逆にすると、Firefox を閉じた後にのみ SSH が開きます。


以下の助けを借りて、この簡略化されたスクリプトを使用しました:

#!/bin/bash -e

#Start SSH
ssh -L 2001:localhost:8888 -Nf myserver.com -p 443 &

#Start Firefox
firefox -p "SSHProxy" &

#Kill the SSH port 2001 when Firefox stops
trap "ps aux | grep ssh | grep 2001 | awk '{print \$2}' | xargs kill" EXIT SIGINT SIGTERM

wait

答え1

配列を使用して PID を保存し、それらをトラップして強制終了する bash スクリプトを作成するのはどうでしょうか。

#!/bin/bash -e

ssh -L 2001:localhost:8888 -N myserver.com -p 443 &
PID[0]=$!
firefox -p "SSHProxy" &
PID[1]=$!
trap "kill ${PID[*]}" INT SIGINT        
wait

パスワードを使用する必要がある場合は、ここを参照してくださいsshpass:https://stackoverflow.com/questions/16937104/provide-password-to-ssh-command-inside-bash-script-without-the-usage-of-public

編集:

ターミナルでスクリプトを実行します。参照します。参照が完了したら、ターミナルに戻ってCtr-C(INT/SIGINT) を押すと、プロセスがクリーンアップされます。私の場合はうまくいったようです。

関連情報