私はプロキシサーバーに接続しています
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) を押すと、プロセスがクリーンアップされます。私の場合はうまくいったようです。