我在我的App服务器上运行一个shell脚本,该脚本将在安装了Postgres数据库的另一台机器上运行。它将执行查询并返回一对ID并存储到变量中。请在下面找到我的shell脚本。
ssh root@<Remote_HOST> 'bash -s'<< EOF
projectid=`/usr/pgsql-9.4/bin/psql $DB_NAME -U $DB_USER -h $DB_HOST -t -c "select projectid from projects where project_Name='$projectName';"`
scenarioid=`/usr/pgsql-9.4/bin/psql $DB_NAME -U $DB_USER -h $DB_HOST -t -c "select scenarioid from scenarios where scenario='$scenario' and projectid='$projectid';"`
EOF
echo $projectid
如果我执行Shell,我会收到以下错误: /root/test/data.sh:line 62:/usr/pgsql-9.4/bin/psql:没有这样的文件或目录 /root/test/data.sh:line 62:/usr/pgsql-9.4/bin/psql:没有这样的文件或目录
但是在安装了数据库的机器上,如果我执行相同的查询,我会得到正确的结果。所以我不确定是什么问题,查询很好,目录存在。即使在SSH到远程主机之后,如果我执行ls或pwd,我也会获得正确的输出。我已经导出了数据库密码,所以没有密码的数据库登录已经正常工作了。
有些人可以告诉我,我在这里缺少什么?
答案 0 :(得分:0)
最后,我能够通过在Shell中进行更改来解决我的问题
projectid=$(ssh root@<Remote_HOST> << EOF
/usr/pgsql-9.4/bin/psql $DB_NAME -U $DB_USER -h $DB_HOST -t -c "select projectid from projects where project_Name='$projectName';"
EOF)
scenarioid=$(ssh root@<Remote_HOST> << EOF
/usr/pgsql-9.4/bin/psql $DB_NAME -U $DB_USER -h $DB_HOST -t -c "select scenarioid from scenarios where scenario='$scenario' and projectid='$projectid';"
EOF)
echo "$projectid : $scenarioid"