2016-09-30 6 views
0

私のアプリケーションサーバーで、Postgresデータベースがインストールされている別のマシンに移動するシェルスクリプトを実行しています。クエリを実行し、IDのカップルを返し、変数に格納します。私のシェルスクリプトを見つけてください。リモートpostgresデータベースでクエリを実行しているときにシェルで問題が発生しました

ssh [email protected]<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 

私はシェルを実行すると、私は次のエラーを取得する: /root/test/data.sh:行62:/usr/pgsql-9.4/bin/psql:そのようなファイルやディレクトリ /ルート/ test/data.sh:行62:/usr/pgsql-9.4/bin/psql:そのようなファイルやディレクトリはありません

しかし、データベースがインストールされているマシンでは、同じクエリを実行すると適切な結果が得られます。だから何が間違っているのかわからない、クエリがうまくいき、ディレクトリが存在する。リモートホストへのSSHの後であっても、私がlsかpwdすれば、私は適切な出力を得ています。私はすでにデータベースのパスワードをエクスポートしているので、パスワードなしのデータベースのログインはすでに正常に動作しています。

私はここに何が欠けているのか教えていただけますか?

+0

これを見て行うことで、私の問題を解決することができました。 http://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why –

+0

ありがとうございます。私は、リンクを介して述べられたいくつかの詳細を参考に考えている。私は言及したようにいくつかのことを試している。 – user1169236

答えて

0

は最終的に私は、シェル

の変化
projectid=$(ssh [email protected]<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 [email protected]<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" 
関連する問題