Как открыть и закрыть SSH-туннель вместе с Firefox?

Как открыть и закрыть SSH-туннель вместе с Firefox?

У меня есть прокси-сервер, к которому я подключаюсь вот так

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

Затем я открываю Firefox.

firefox -p "SSHProxy"

(Запускается Firefox, настроенный на использование порта 2001). Я немного побродил по интернету, затем закрыл Firefox и остановил туннель.

Я хотел бы автоматизировать это: открыть туннель, затем открыть Firefox. Когда я закрываю Firefox, я хотел бы закрыть и туннель.

Возможно ли это в простом сценарии?

я пытался

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

но выполняется только бит SSH, Firefox не открывается. Если я заменю порядок, то SSH откроется только после того, как я закрою Firefox.


С помощью нижеприведенной инструкции я использовал этот упрощенный скрипт:

#!/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

А как насчет создания bash-скрипта, который использует массивы для хранения PID, а затем перехватывает и уничтожает их:

#!/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/предоставьте-пароль-к-команде-ssh-inside-bash-script-without-the-usage-of-public

РЕДАКТИРОВАТЬ:

Запустите скрипт в терминале. Просмотрите. После просмотра вернитесь в терминал и нажмите Ctr-C(INT/SIGINT), процессы должны быть очищены. Мне показалось, что это сработало.

Связанный контент