我需要在脚本中使用 set -x 来显示日志中执行的命令
但有一个变量是密码,因此该密码显示在计划文本中
有没有办法只隐藏一个变量?
IE:
脚本:
pas=test123
set -x
mysql -uroot -p$pas
输出:
[root@server1]# ./teste.sh
++ mysql -uroot -ptest123
我想test123
从输出中删除。
答案1
创建一个~/.my.cnf
:
[client]
user=DB_user
password="xxx"
现在,您可以在不使用脚本中的-u
和标志的情况下登录。-p
请注意,这不仅仅是set -x
脚本的输出有问题,而且在大多数系统上,所有正在运行的进程的命令行参数ps
对任何用户都是可见的,这使得在其中传递密码完全不安全。MySQL手册中也提到了这一点在选项下--password
:
在命令行上指定密码应该被认为是不安全的。为了避免在命令行上提供密码,请使用选项文件。看第 8.1.2.1 节 “密码安全的最终用户指南”。