要するに、管理者の介入なしに、シェルスクリプトを介してセルフサービスの期限切れパスワードの変更を自動化したいと考えています。
残念ながら、私のアプローチは失敗し、その理由がわかりません:
sqlplus -S /nolog << !
connect $userid/$password
xyzzy1 # my original uses $newpass
xyzzy1 # but results are the same
select distinct version from product_component_version;
exit;
!
生産する
ERROR: ORA-28001: the password has expired # connection succeeded
Changing password for USER
New password: # carriage return succeeded?
Retype new password: # carriage return succeeded?
ERROR: ORA-00988: missing or invalid password(s) # variables/STDIN may be NULL?
Password unchanged
SP2-0042: unknown command "xyzzy1" - rest of line ignored.
SP2-0042: unknown command "xyzzy1" - rest of line ignored.
SP2-0640: Not connected
新しいパスワードの要求に対して渡された応答を無視しているように見えますが、同時にハングしません。
手動で接続し、同じ応答を対話的に提供することは機能します。パスワード変更プロセスが STDIN を受け入れないのはなぜだろうか。
何か案は?
注: 1 年前の質問Programmatically Change Expired Oracle DB Password? これを書いているときに提供されたもので、私が導き出したものとまったく同じですが、私にはうまくいきません。私はこの点でエチケットについて確信が持てないので、(再)投稿することを事前にお詫びします.
私の環境は Solaris と Oracle 10g/11g です。