postgres データベースからいくつかのデータを出力するスクリプトがあります。
#!/bin/bash
dbname="inventory"
username="postgres"
NOW=$(date +"%d-%m-%Y-%H%M%S")
OUTPUT="output.$NOW"
psql $dbname $username << EOF
\o | cat >> $OUTPUT
select count(*) from component;
select * from product where procode='AAA';
\q
\o
EOF
これをローカル マシンで実行すると、必要なデータがテキスト ファイルにエクスポートされます。
ここで、10 台のリモート コンピューターに対して同じことを行い、スクリプトを実行したマシン上の 1 つのファイルに出力を保存したいと考えています。リモート マシンからいくつかの情報を grep する次のコードがありますが、上記の postgres データを下の $FILE_OUT に追加する必要もあります。
#!/bin/bash
NOW=$(date +"%d-%m-%Y-%H%M%S")
dbname="inventory"
username="postgres"
echo "Enter the file name"
read FILE_IN
FILE_OUT="invcheck.$NOW"
for i in $(cat $FILE_IN); do
echo $i >> $FILE_OUT
ssh user@$i "ps -efw | grep TRADINGTIMEPLUS /opt/jrms/jrms.ini" >> $FILE_OUT
私はpostgresコードを次のような行に入れようとしました:
ssh rmsasi@hj$i "psql $dbname $username << EOF \o | cat >> $FILE_OUT select * from component where code='1000';\q;\o; EOF"
しかし、エラーが発生し、postgres データが $FILE_OUT に含まれていません
psql: warning: extra option o ignored
cat: from: No such file or directory
cat: component: No such file or directory
cat: where: No such file or directory
cat: code=1000: No such file or directory
bash: line 1: q: command not found
bash: line 1: o: command not found
bash: line 1: EOF: command not found
私はスクリプティングが初めてなので、単純なものが欠けていることを願っています。
事前に感謝します。私が達成しようとしていることを行うためのより良い方法があれば、どんな指針にも感謝します。