sshで繋いだ先でコマンド発行し、その出力を受け取りたい
SSHで接続を行い、接続先でコマンド実行した結果「のみ」を受け取りたいです。
具体的には接続先でpsqlを使用してSQLを発行した結果を受け取りたいと考えています。
(直接psqlで接続することはできない前提になります。)
以下の通り、expectを使用して実現はできましたが、SSHのコマンドなども入ってしまっております。
欲しいのはpsqlの結果のみなので、SSHで繋いだ先で標準出力に出力されたメッセージのみを受け取りたいです。(下記のコードですとresultに設定したい)
#!/bin/sh
PGPASS="passwod"
SQL="select col1 from hoge limit 1;"
PSQL="psql -h hostname -p 1234 -U admin -c '${SQL}' database"
COMMAND="export PGPASSWORD=${PGPASS}"
COMMAND="${COMMAND};${PSQL}"
result=`expect -c "
spawn /usr/bin/ssh user@host -i /key.ppk \"${COMMAND}\"
expect \"Enter passphrase for key*\"
send \"password\n\"
interact;"`
echo ${result}
環境は「Ubuntu(Bash on Ubuntu on Windows)」になります。
また、シェルにこだわっている訳ではありませんので、他の言語やツールなどがありましたらご紹介頂ければと思います。