在 ksh 脚本中传递给 sql 查询的掩码变量

Mask variable passed to sql query in ksh script

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

sqlplus sys/sysPwd@db<<EOf>dba_password_change_log.log
Alter user $dba_user identified by $newPwd;
quit;
EOF

$猫dba_password_change_log.log

更改由 T1ger 识别的用户 SCOTT;

如何屏蔽 $newPwd 变量?

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

我找到了另一种方法。我只是改用了 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;
        /

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

第 1 行错误: ORA-20001: 更改用户命令失败: ORA-28007: 密码不能重复使用 ORA-06512: 在第 8 行