Я постоянно запускаю эти две команды, чтобы подключиться к моему экземпляру rds в aws, защищенном брандмауэром (поэтому я туннелирую через экземпляр ec2), вот так:
Команда 1: открыть туннель (запустить в фоновом режиме)
ssh -N -L port:host:5432 user@$ip -i ~/.ssh/key.pub &
Команда 2: подключиться к БД через туннельный порт:
PGPASSWORD=password psql dbname -U user -h ip_address -p port;
это потрясающе, но я хотел бы объединить их в одну функцию. Но у меня ничего не получалось
попытка 1: запустить без второстепенных вещей:
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;
}
просто говорит мне это:
$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?
хотя начальная команда выполняется в фоновом режиме:
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
и если я сразу же запускаю следующую команду после нее .. я подключаюсь к БД просто отлично!
PGPASSWORD=password psql dbname -U user -h ip_address -p port;
user=>
как мне сделать эту работу?