Database 为什么在curl中引用密码变量会导致授权失败?(猛击)
我对bash和curl有一个非常具体的问题 我们所做的是:Database 为什么在curl中引用密码变量会导致授权失败?(猛击),database,bash,variables,curl,authorization,Database,Bash,Variables,Curl,Authorization,我对bash和curl有一个非常具体的问题 我们所做的是: 从jenkins读取密码并将其粘贴到配置文件(我无权访问该密码) 从bash中的配置文件中读取参数(主机、用户、密码等),并将其存储在变量中 将带有curl的内容发布到数据库,并将结果存储在变量中 最近,我们在部署脚本中添加了shellcheck,因此需要将变量放在引号中 这是我们要发送的请求(shellcheck已批准): 这是我们得到的错误信息: {“错误”:“授权失败”} 当我解压缩密码变量(“${dbUser}”:${dbP
- 从jenkins读取密码并将其粘贴到配置文件(我无权访问该密码)
- 从bash中的配置文件中读取参数(主机、用户、密码等),并将其存储在变量中
- 将带有curl的内容发布到数据库,并将结果存储在变量中
--用户用户名:密码时。所以问题似乎出在密码上
使用google并用不同的特殊字符测试程序(没有curl)也无法解决这个问题
有人经历过这样的事情吗
编辑1:
这是jenkins部署文件的摘录
stage('config files') {
withCredentials([string(credentialsId: "${env_params.db_password}", variable: 'db_pw')]) {
sshagent(credentials: ["${env_params.user}"]) {
sh "echo \"dbPwd=${db_pw}\" >> environment_variables/config.properties"
这就是shell脚本存储密码的方式
dbPwd=$(grep ^"$dbPwd" <PATH>/config.properties | cut -d "=" -f2)
dbPwd=$(grep^“$dbPwd”/config.properties | cut-d”=“-f2)
您可以在另一个文件中设置密码,并将文件内容用作密码变量。谢谢您的支持。
密码存储中似乎有尾随空格。
我用sed删除了它们,现在它可以工作了
dbPwd=$(grep ^"$dbPwd" <PATH>/config.properties | cut -d "=" -f2 | sed -e 's/[[:space:]]*$//')
dbPwd=$(grep^“$dbPwd”/config.properties | cut-d”=“-f2 | sed-e's/[:space:][]*$/”)
我首先将echo-n“${dbUser}”:${dpPwd}
替换为printf'%s'$dbUser:$dbPwd'
。另外,您首先是如何设置dbPwd
的?不带引号的参数扩展会进行分词和路径名生成;您设置dpPwd
的过程可能是以预期(因此现在需要)执行分词和路径名扩展的方式进行的。也可能是密码变量以某种方式被乱码,分词“纠正”——比如可能在值中有尾随空格。如果不访问密码,将很难进行故障排除。您是否可以设置一个您确实拥有密码的测试帐户,并查看其行为?最有可能的是,密码后面有空格(空格、新行、\r、…)。使用“-x”运行脚本以了解更多信息。此外,考虑从CONFIG文件中共享读取密码的代码也可以是密码/用户中的引导空格,或者口令本身包含多个连续的空白。
dbPwd=$(grep ^"$dbPwd" <PATH>/config.properties | cut -d "=" -f2 | sed -e 's/[[:space:]]*$//')