当前位置: 首页 > 面试题库 >

在bash脚本中使用curl并获取curl:(3)在URL中发现非法字符

劳昊明
2023-03-14
问题内容

因此,我有一个非常简单的bash脚本,该脚本正在卷曲到头的身份验证服务器。标头网址被写入var,然后在下一个curl调用中使用。在第一个curl调用中使用var集时,出现“
curl:(3)在URL中发现非法字符”。我能够回显var,并且看起来一切都很好,甚至可以重置var(在下面的示例中),并且可以正常工作。

Bash脚本

URL=$(curl -i -X GET -H "X-Auth-User: MyUserna,e" -H "X-Auth-Key: MyAPIKey" "https://urlToAuthServer.tld/auth/v1.0/" | grep "X-Storage-Url:" | awk '{print $2}')

curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt

运行上面的示例时,我得到:

curl: (3) Illegal characters found in URL

URL var看起来像这样(没有非法字符)

https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534

当我在终端中执行此操作时:

$ URL = $(curl -i -X GET -H“ X-Auth-User:MyUserna,e” -H“ X-Auth-
Key:MyAPIKey”“
https://urlToAuthServer.tld/auth/v1.0/
“ | grep” X-Storage-Url:“ | awk’{print $ 2}’)

$ echo $ URL

https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534

现在,我复制并粘贴字符串,然后将其重新分配到URL(同样在终端中):

>$ URL="https://somesecureurl.com/auth/AUTH_67383834-45245453-g34g34t5-34534"
>$ curl -X GET -H "X-Auth-Token: MyAuthTok" "${URL}/folder/myfile.txt" -o ./myfile.txt

有用。

那么,为什么在第一个示例中出现“ curl:(3)URL中发现非法字符”错误?

更新 我跑了这个: printf %s "$URL" | xxd

这是输出(地址变了,您就知道了)

0000000: 6874 7470 733a 2f2f 6461 6c30 352e 6f62  https://server.ob
0000010: 6a65 6374 7374 6f72 6167 652e 736f 6674  jectstorage.lite
0000020: 6c61 7965 722e 6e65 742f 7631 2f41 5554  sabers.com/v1/AUT
0000030: 485f 6665 3235 3339 3434 2d38 6433 322d  H_aE2563981-7d32-
0000040: 3432 3138 2d61 6566 632d 6665 6638 3465  4201-bdoi-fef94a
0000050: 6166 3331 6232 0d                        ag11c8.

问题答案:

$ URL \r的结尾(0d)包含(CR )。用删除

URL=${URL%$'\r'}

搭配使用之前curl



 类似资料:
  • 问题内容: 我正在尝试使用bash脚本将JSON文件上传到我的noSQL数据库中,但是它不起作用,我也不明白为什么。 这是脚本: 这是错误: 当我执行命令行中给出的命令时,它仍然可以正常工作。 这是什么错误?谢谢 问题答案: 不要将命令存储在变量中;如果您绝对必须具有可用于日志记录的内容,请将 参数 放入数组中。

  • 问题内容: 我正在尝试提交post变量的地方编写bash脚本,但是wget将其视为多个URL,我相信是因为它不是URLENCODED …这是我的基本思想 我遇到了错误,alert.php没有得到post变量,而且它还很糊糊地说 无法解决我无法解决我无法解决尝试..依此类推。 上面的示例是一个简单的sudo示例,但我相信如果可以对其进行url编码,它将通过,我什至尝试了php: 但PHP错误了..任

  • 问题内容: 我正在尝试在python脚本中执行curl命令。 如果我在终端中执行此操作,则如下所示: 我看到了使用建议,但是我不知道如何将其应用于我的。 我尝试使用: 可以,但是还有更好的方法吗? 问题答案: 您可以像@roippi一样使用urllib:

  • 问题内容: 我想知道是否有可能在文件只是字符串的情况下发布文件以及其他表单数据? 我知道您可以通过在文件路径前面加上“ @”前缀来发布文件系统中已经存在的文件。 但是,我想绕过创建一个临时文件,而仅将该文件作为字符串发送,但是我不确定如何在PHP中使用cURL构造请求。 干杯 问题答案: 应该可以:这是通过浏览器发布的表格(忽略了不相关的字段): 因此,如果我们自己构建POST主体并设置一个或多个

  • 问题内容: 在Java中使用curl。我的问题是Java内置的curl或我必须从任何第三方资源安装它才能与Java一起使用。如果是这样,如何在java中安装curl。我已经搜寻了很长时间,但没有找到任何帮助。希望有人能帮助我。 提前致谢。 问题答案: 你可以使用和/或。 另请参见有关该主题的Oracle简单教程。但是,它有点冗长。为了减少冗长的代码结尾,你可能需要考虑使用Apache HttpCl

  • 问题内容: 我正在使用CURL来获取网站的状态(如果它处于启动状态/关闭状态或重定向到另一个网站)。我想使其尽可能地精简,但是效果不佳。 我把它包装在一个函数中。它工作正常,但性能并不是最好的,因为它会下载整个页面,如果我删除它,它会一直返回。 有谁知道如何提高性能? 问题答案: 首先确保URL实际上是有效的(字符串,不是空,语法不错),这可以快速检查服务器端。例如,首先执行此操作可以节省大量时间