Je lance ces deux commandes tout le temps pour me connecter à mon instance rds sur aws qui est protégée derrière un pare-feu (donc je passe par l'instance ec2) de la manière suivante :
commande 1 : ouvrir le tunnel (en arrière-plan)
ssh -N -L port:host:5432 user@$ip -i ~/.ssh/key.pub &
commande 2 : se connecter à la base de données via le port du tunnel :
PGPASSWORD=password psql dbname -U user -h ip_address -p port;
ce qui est génial, mais j'aimerais mettre ces deux commandes dans une seule fonction. Mais rien n'a fonctionné avec moi :
essai 1 : exécution sans l'arrière-plan :
function db()
{
ssh -N -L port:host:5432 user@$ip -i ~/.ssh/key.pub &
PGPASSWORD=password psql dbname -U user -h ip_address -p port;
}
simplement me dit cela :
$proddb
[1] 62924
psql: could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 6666?
bien que la commande initiale soit en cours d'exécution en arrière-plan :
ps aux | grep host
(standard input):435:abdullah 62924 0.0 0.0 4315660 5828 s006 S 3:06PM 0:00.03 ssh -N -L port:host:5432 user@$ip -i ~/.ssh/key.pub
et si je lance immédiatement la commande suivante après ça.. je me connecte à la base de données sans problème !
PGPASSWORD=password psql dbname -U user -h ip_address -p port;
user=>
Comment puis-je faire en sorte que cela fonctionne ?