Eu tenho um servidor proxy ao qual me conecto assim
ssh -L 2001:localhost:8888 -N myserver.com -p 443
Eu então abro o Firefox
firefox -p "SSHProxy"
(Ele inicia o Firefox configurado para usar a porta 2001). Eu navego um pouco, fecho o Firefox e paro o túnel.
O que eu gostaria de fazer é automatizá-lo: abrir o túnel e depois abrir o Firefox. Quando fechar o Firefox, também gostaria de fechar o túnel.
Isso é possível em um script simples?
eu tentei
ssh -L 2001:localhost:8888 -N myserver.com -p 443 && firefox -p "SSHProxy"
mas apenas o bit SSH é executado, o Firefox não abre. Se eu inverter a ordem, o SSH só abrirá depois que eu fechar o Firefox.
Com a ajuda abaixo usei este script simplificado:
#!/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
Responder1
Que tal criar um script bash que use arrays para armazenar o PID e, em seguida, interceptá-los e eliminá-los:
#!/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
Se você precisar usar uma senha, procure aqui sshpass
:https://stackoverflow.com/questions/16937104/provide-password-to-ssh-command-inside-bash-script-without-the-usage-of-public
EDITAR:
Execute o script no terminal. Navegar. Ao terminar a navegação, volte ao terminal e pressione Ctr-C
(INT/SIGINT) os processos deverão ser limpos. Pareceu funcionar para mim.