Shell 脚本中的 Curl 可能在标题部分失败
Posted
技术标签:
【中文标题】Shell 脚本中的 Curl 可能在标题部分失败【英文标题】:Curl in Shell Script Potentially Failing in Headers Section 【发布时间】:2022-01-08 12:25:35 【问题描述】:我正在尝试运行一个脚本,该脚本将获取 bitwarden 中的用户列表并将其输出到名为 bitmembers 的文件中。
下面是XXXX
是我的 API 持有者令牌的脚本
#!/bin/bash
CURL="/usr/bin/curl"
BITHTTP="https://api.bitwarden.com/public/members"
CURLARGS="-X GET"
header='-H "accept: text/plain" -H "Authorization: Bearer XXXX"'
$CURL $CURLARGS $BITHTTP $header > /tmp/bitmembers
以下是我在运行脚本时遇到的错误:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: text
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: Bearer
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: XXXX
以下是 curl 命令和确认的作品:
curl -X GET "https://api.bitwarden.com/public/members" -H "accept: text/plain" -H "Authorization: Bearer XXXX"
看起来它在标题部分发生了故障。你能指出我遗漏了什么吗?
【问题讨论】:
BITHTTP='"api.bitwarden.com/public/members"' 您可以尝试在包括双引号的 url 中添加单引号吗? 我尝试按照您的建议添加单引号,除了上面的错误之外,现在它显示curl: (3) URL using bad/illegal format or missing URL
看起来像 header 和 get 之类的 curl 选项需要在单独的变量中
【参考方案1】:
我认为问题在于未在单独的变量中设置 curl 选项,因此以下内容应该可以解决错误:
#!/bin/bash
CURL="/usr/bin/curl"
CURLARGS="-X GET"
BITHTTP="https://api.bitwarden.com/public/members"
header="-H"
accept="accept:text/plain"
auth="Authorization:Bearer XXXX"
$CURL $CURLARGS $BITHTTP $header "$accept" $header "$auth" > /tmp/bitmembers
This 答案似乎是将变量作为选项发送到主 curl 命令的好方法。示例:
CURL_OPTIONS=( -X GET "$BITHTTP" -H "$accept" -H "$auth" )
$CURL "$CURL_OPTIONS[@]"
【讨论】:
啊甜蜜!那行得通。谢谢! 太棒了!我很高兴它对你有用:)以上是关于Shell 脚本中的 Curl 可能在标题部分失败的主要内容,如果未能解决你的问题,请参考以下文章