我正在 AIX 7.2 上运行 ksh 脚本。
在调试模式下,我想将所有脚本执行的操作重定向到 brkpt 文件。
该脚本还登录另一个应用程序,因此使用密码(假设“pw123_”)
exec > $brkpt_file 2>&1
set -xv
dsmadmc -id=admin -pa=pw123_ q pr
Run Code Online (Sandbox Code Playgroud)
重定向工作正常,但我想用“***”替换密码字符串,以便它在 brkpt 文件中永远不可见。
这在命令行上工作得很好:
echo "dsmadmc -id=admin -pa=pw123_ q pr" | sed "s/-pa=[[:graph:]]* /-pa=*** /g"
result
dsmadmc -id=admin -pa=*** q pr
Run Code Online (Sandbox Code Playgroud)
但是一旦我将这个“sed”与“exec”结合使用:
a)输出不再重定向到文件,而是在屏幕上
b)密码字符串不会被替换
exec | sed 's/-pa.*=[[:graph:]]* /pa=*** /g' > $brkpt_file 2>&1
set-xv
dsmadmc -id=admin -pa=pw123_ q pr
result
+ dsmadmc -id=admin -pa=pw123_ q pr
+ ... other stuff of script
Run Code Online (Sandbox Code Playgroud)
如何获取 brkpt 中的所有脚本内容并隐藏密码?