在工作中经常需要写 shell 脚本,为了方便观察脚本执行情况,经常需要执行一些打印操作。在打印的文案中,可能带有一些敏感信息,例如用户账号、密码等。出于安全考虑,需要对一些敏感字符执行屏蔽。
这时候可以看到常见的方案:
把敏感信息写在一个变量集合中 $msg_array
,在脚本执行结束逻辑,调用 sed
命令对 log 文件进行一遍过滤。
这个方案在需要确保脚本能执行到 sed
的逻辑,若脚本提前退出或进程被杀死,敏感信息会留在 log 文件中,从而产生安全问题。
于是有另一个方案出现:
把打印 log 都调用相同的方法,在该方法中过滤敏感信息,打印过滤后的信息。
这里稍微使用了 eval
命令,实现了把敏感信息替换成 xxx
。
1 |
|
执行以上脚本,将得到输出:
1 | now we get msg create user with name Jack and password 123 |