读取文件行时,如何避免评估控制台输出或Shell脚本中的日志包含机密?

问题描述

可能是一个小的shell脚本问题: 我试图避免将秘密值打印到控制台输出或日志。我必须逐行读取文件,然后替换每行中的所有变量值并将输出写入新文件。

这是我的读写代码,但问题是input.txt包含来自另一个系统或环境变量的秘密变量。

source ./environment

while read line;
    do eval echo \"$line\";
done < input.txt > output.txt

./环境文件包含一些变量值。

input.txt的外观如下:

projectName=Alpha
apiKey=${SECREST_APIKEY}
userKey=${SECRET_USERKEY}
projectVersion={$VERSION}
requesterEmail=

颜色日志:

...
+ read line
+ eval echo '"projectName=Alpha"'
++ echo projectName=Alpha
projectName=Alpha
+ read line
+ eval echo '"apiKey=${CFG_APIKEY}"'
++ echo apiKey=blablablablablabla
+ read line
+ eval echo '"userKey=${CFG_USERKEY}"'
++ echo userKey=keyKEYkey
...

但是控制台日志会打印出包括机密在内的所有内容。我知道这是因为我的代码中产生了回声,但我不知道这里的替代解决方案是什么。 如果另一个问题已经解决了这个问题,请告诉我。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)