2016-04-25 104 views
0

您好我正在编写一个ksh脚本来更改整个环境中的DBA密码。我提示用户提供新密码并将其设置为$ newPwd变量。问题是,当我将这个变量传递给sql查询时,它显示了日志文件中的密码。在ksh脚本中传递给sql查询的掩码变量

sqlplus sys/[email protected]<<EOf>dba_password_change_log.log 
Alter user $dba_user identified by $newPwd; 
quit; 
EOF 

$猫dba_password_change_log.log

ALTER USER斯科特T1ger鉴定;

如何屏蔽$ newPwd变量?

回答

0

我找到了另一种方法。我只是使用了plsql过程。

declare 
      emesg varchar2(32000); 
     begin 
      dbms_output.put_line('alter user ${dba_user} identified by *******'); 
      execute immediate 'alter user ${dba_user} identified by "${newPwd}"'; 
      exception when others then 
      emesg := SQLERRM; 
      raise_application_error(-20001, 'alter user ${dba_user} command failed: '|| emesg); 
     end; 
     /

现在,当我打开日志文件时,它只会显示下面的错误消息或其他错误消息。

ERROR位于第1行: ORA-20001:改变用户命令失败:ORA-28007:密码不能被重新使用 ORA-06512:在第8行

0

您需要将其加密到您的日志文件中。您需要使用一些代码将其传递给pgp或其他加密程序。