Node.js:如何在脚本中的console.log语句中屏蔽命令行参数?

时间:2017-08-07 23:08:21

标签: node.js

当我在Jenkins管道中触发Node.js脚本时,我注意到了此功能,并将用户名和密码作为命令行参数传递。

脚本被这样调用:

node myScript.js $CREDENTIALS_USR $CREDENTIALS_PSW 

在脚本中,有以下日志语句:

console.log('username', process.argv[2]);
console.log('password', process.argv[3]);

但是,尽管正确打印了用户名,但密码的日志语句只显示***。这非常好,因为您不希望在控制台日志中显示密码。但我不明白它是如何完成的。事实上,如果我做了

的日志
console.log('password length', process.argv[3].length);

显示实际密码的正确长度,因此传递的密码正确无误。它只是显示为屏蔽值。在哪里可以设置此类配置来屏蔽控制台日志语句中的命令行参数?

举个例子,如果$CREDENTIALS_USR的值为mandeep$CREDENTIALS_PSW的值为123456,并且它们都是从Jenkins凭证存储中加载的,在脚本中,以下语句将在注释中将输出写在它们旁边:

console.log('username', process.argv[2]); // this will print mandeep
console.log('password', process.argv[3]); // this will print *** (only 3 stars irrespective of actual length of process.argv[3]
console.log('password length', process.argv[3].length); // this will print 6 because the password was 123456

1 个答案:

答案 0 :(得分:1)

Node不会对任何脚本参数执行任何自动/隐式屏蔽。詹金斯很可能就是那个传递字面串的人,而且#39; ***'作为你脚本的第二个参数。