Bash 脚本,通过 ssh 的远程 psql 命令,管道 sql 文件,密码失败

Bash script, remote psql command over ssh, pipe sql file, password fails

我有一个 bash 脚本。我想 运行 一个带有 ssh 的 postgres 命令,它通过管道传输一个本地文件。问题是 psql 命令提示输入密码,而我的 sql 文件通过管道传输到其中。如何编写在输入密码后通过管道传输的命令?

ssh server "psql -W -h db_host -p 5432 -U db_user -d postgres" < staging.sql

我建议将其分解为多个步骤:

# Transfer the sql file to the server
scp staging.sql server

# Excute the queries in that file with psql over ssh
# Notes:
#   - ssh -t enforces terminal allocation. You may try it without this option and see if it still works.
#   - psql -f FILENAME reads commands from file
# 
ssh -t server \
    'psql -W -h db_host -U db_user -d postgres -f staging.sql; rm staging.sql'