使用auth令牌标头到中间层的curl PUT失败而没有评估

时间:2018-10-22 18:41:03

标签: bash http curl mesosphere quoting

  

编辑:

我设法使其与

一起使用
response=$(
  curl -k -X PUT -d "$marathon_payload" --write-out %{http_code} --silent --output "$tmp"\
       -H "Authorization: token=$dcos_token" -H "$header_content_type"  $app_id_url
)

单引号引起了问题。旋转了几次,但一切都很好。

MALAL:如果您没有对整件事进行评估,那么值中的引号并不重要,除非您正确地引用了该值,我应该早就知道了。奥卡姆再次获胜。

  

结束编辑

我正在使用curl启动Mesosphere微服务部署,但是如果不使用eval它将无法成功。自从我最近继承了这段代码以来,我一直试图将eval清除掉,只是出于一种习惯,但这使我沮丧。

该脚本使用以下命令启动部署

response=$(
 eval curl -k -X PUT -d "'$marathon_payload'" --write-out %{http_code} --silent --output $tmp\
       -H "'Authorization: token=$dcos_token'" -H "'$header_content_type'" $app_id_url
)

如果它得到200或201,它将循环curl以有效地屏幕抓取部署页面,直到请求消失。

chkDeploy() { rm -f $tmp;
  eval curl -k -X GET --silent --write-out %{http_code} --silent --output $tmp\
            -H "'Authorization: token=$dcos_token'" -H "'$header_content_type'" $deployments_url
}
response=$( chkDeploy )

$dcos_token是base64编码的字符串。

然后,它通过另一个curl循环检查服务到信息页面,以便可以验证版本号。 此功能正常运行,没有评估。

chkCode() {
  curl -k -X GET --write-out %{http_code} --silent --output $tmp $info_url;
}
response=$( chkCode )

前两个返回401,身份验证失败。 我猜auth令牌引用已关闭。

1 个答案:

答案 0 :(得分:0)

这里没有理由使用eval;您只需要正确引用-H的参数即可。

response=$(
  curl -k -X PUT -d "$marathon_payload" \
     --write-out %{http_code} \
     --silent --output "$tmp" \
     -H "Authorization: token=$dcos_token" \
     -H "$header_content_type" "$app_id_url"
)