実際に何が起こるかは言われていませんが、資格情報の入力を求められず、sqlplus
が見つからない可能性があると思います。 . Red Hat ボックスでは次のように動作します:
#!/bin/bash
echo Please enter an Oracle Username:
read USERNAME
echo "Please enter the Oracle Username's Password:"
read -s PASS
SID=XE
conn_str=$USERNAME/[email protected]$SID
ssh [email protected] << EOF
# set these for your specific environment
ORACLE_HOME=<path to ORACLE_HOME>
PATH=$PATH:$ORACLE_HOME/bin # or without .../bin depending on client
TNS_ADMIN=<path to tnsnames.ora directory, if not default>
sqlplus -s /nolog
connect $conn_str
select * FROM user_tables;
exit
EOF
これは、「標準入力が端末ではないため、疑似端末が割り当てられない」問題を回避するために、ローカル マシン上のユーザーから値を収集しています。
次に、リモート サーバーで Oracle 環境を設定します。設定する必要があるのは、使用しているクライアントによって異なります (特に、oracle<として接続している場合は、インスタント クライアントを使用しているかどうか)。 /コード> おそらく
oraenv
を実行できます。 ).
/nolog
で SQL*Plus を実行するように調整しました そして接続
一度実行すると、資格情報は ps
で公開されません 出力。そして、古い tabs
から切り替えました より一般的な user_tables
に .
ネストされたヒアドキュメントは機能しますが、必須ではありません。 SQL コマンドはすでに適切な場所に入力されており、リモート シェルではなく SQL*Plus によって認識されます。
もちろん、実際にどのようなエラーが表示されたのかはわかりませんので、これは主に憶測です。クライアントをローカルにインストールし、SSH ではなく SQL*Net 接続を使用する方がおそらく簡単ですが、不明なファイアウォール制限がある可能性があります。