ssh sqlplus コマンドに $ 記号がある場合は置き換えられます。

ssh sqlplus コマンドに $ 記号がある場合は置き換えられます。

SSHを介していくつかのSQLPLUSコードを実行しています。

ssh -q node1 'export ORACLE_SID=DB11D_1;ORAENV_ASK=NO;. oraenv >/dev/null 2>&1;sqlplus -s / as sysdba  << ENDSQL
whenever sqlerror exit 1
alter system set wallet open identified by "Passwo$1";
exit;
ENDSQL'

パスワード「Passwo$1」の$1が交換されたようです。これによりコマンドが失敗します。

このコマンドは最終的に「Passwo」によって認識されるChange System Settings Wallet Openに変更されます*

ERROR at line 1:
ORA-28353: failed to open wallet

SQLPLUSコマンドで「$1」を保存する方法をご存知ですか?

私は次を試しました

- alter system set wallet open identified by \"Passwo$1\";
- alter system set wallet open identified by \\\"Passwo$1\\\";
- alter system set wallet open identified by '\""Passwo$1""\';

パスワードの$記号にエスケープ文字を追加することはできません。だから私はできません。

- alter system set wallet open identified by "Passwo\$1";

ありがとう

ベストアンサー1

に渡すhere文書からasをsqlplus脱出するか(質問でこれを行うことができないと言った理由がはっきりしない)、またはorを使用してここの文書全体を引用してくださいです)。拡張が必要な​​その他のコンテンツについては、ここに文書化してください。$\$<<'ENDSQL'<<\ENDSQL

また、この文書内では文字列をPasswo$1一重引用符で囲む必要があります。ドキュメントはシェルスクリプトなので、文字列を解釈するシェルから文字列を保護する必要があります。で作成してください'Passwo$1'

おすすめ記事