当我在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
答案 0 :(得分:1)
Node不会对任何脚本参数执行任何自动/隐式屏蔽。詹金斯很可能就是那个传递字面串的人,而且#39; ***'作为你脚本的第二个参数。