在 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 行
您好,我正在编写一个 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 行