我正在用Jenkins编写一个Shell脚本,该脚本登录数据库并运行一个sql文件。所有命令都记录到控制台,因此,如果我对sqlplus(sqlplus -s $USERNAME/$PASSWORD@connectionstring
)使用简单的登录方法,则会记录密码,这是不理想的。
这有效:
sqlplus -S ${USERNAME}/${PASSWORD}@connectionstring @sql_update.sql
但是一旦替换了值,登录Jenkins就会显示命令:
+ sqlplus user123/pass123@connectionstring @sql_update.sql
为避免记录密码,我尝试使用sqlplus登录方法,您只需提供用户名,然后要求输入密码。
我已经尝试了以下方法,但是得到ORA-01-17: invalid username/password; logon denied
sqlplus -s ${USERNAME}@\"connectionstring\" <<EOF
${PASSWORD}
sql_update.sql
exit
EOF
这显然有什么问题吗?
值得注意的是,仅禁用控制台日志记录是不可行的,因为脚本中的其他内容需要它。
此外,此问题与Connect to sqlplus in a shell script and run SQL scripts之间的区别是我要询问是否分别提供密码。
编辑,感谢Echo off in Jenkins Console Output,我设法部分解决了该问题。现在,我的脚本在运行命令之前包含set +x
,这会隐藏命令。但是,我仍然想知道上面的问题是什么,所以现在暂时不提这个问题。