如果我做
url = "http://example.com?p=" + urllib.quote(query)
Run Code Online (Sandbox Code Playgroud)
/来%2F(休息OAuth的标准化)有更好的图书馆吗?
我有一个像这样的变量:
words="??????"
Run Code Online (Sandbox Code Playgroud)
我想打一个for循环的每个字符,一次一个,例如第一的character="?",那么character="?",character="?"等
我知道的唯一方法是将每个字符输出到文件中的单独行,然后使用while read line,但这似乎非常低效.
我正在尝试使用CURL这样的请求:
curl -X DELETE "https://myhost/context/path/users/OXYugGKg207g5uN/07V"
Run Code Online (Sandbox Code Playgroud)
哪里OXYugGKg207g5uN/07V是哈希,所以我想我需要在执行此请求之前进行编码.
我试过了 curl -X DELETE --data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V"
一些想法?
我有一个文件,其中包含编码的用户代理列表.例如:
Mozilla%2F5.0%20%28Macintosh%3B%20U%3B%20Intel%20Mac%20OS%20X%2010.6%3B%20en
Run Code Online (Sandbox Code Playgroud)
我想要一个shell脚本,它可以读取该文件并写入带有解码字符串的新文件.
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en
Run Code Online (Sandbox Code Playgroud)
我一直在尝试使用这个例子来实现它,但到目前为止还没有工作.
$ echo -e "$(echo "%31+%32%0A%33+%34" | sed 'y/+/ /; s/%/\\x/g')"
Run Code Online (Sandbox Code Playgroud)
我的脚本看起来像:
#!/bin/bash
for f in *.log; do
echo -e "$(cat $f | sed 'y/+/ /; s/%/\x/g')" > y.log
done
Run Code Online (Sandbox Code Playgroud) 使用脚本语言解析AJAX API的输出相对容易:
#!/usr/bin/env python
import urllib
import json
base = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&'
query = urllib.urlencode({'q' : "something"})
response = urllib.urlopen(base + query).read()
data = json.loads(response)
print data['responseData']['results'][0]['url']
Run Code Online (Sandbox Code Playgroud)
但有没有更好的方法来做类似的基本shell脚本?如果你只是卷曲了API页面,你应该如何编码URL参数或解析JSON?
我有多个查询参数,我想使用curl在HTTP PUT操作中发送.如何编码查询参数?例:
$ curl -X PUT http://example.com/resource/1?param1=value%201¶m2=value2
Run Code Online (Sandbox Code Playgroud)
如果'value 1'包含由shell解释的空格或其他字符,则该命令将无法正确解析.
我正在写一个bash脚本,我试图提交一个post变量,但是wget将它视为多个URL我相信因为它不是URLENCODED ...这是我的基本思想
MESSAGE='I am trying to post this information'
wget -O test.txt http://xxxxxxxxx.com/alert.php --post-data 'key=xxxx&message='$MESSAGE''
Run Code Online (Sandbox Code Playgroud)
我收到错误并且alert.php没有得到post变量加上它很难说
无法解决我无法解决我无法解决尝试..等等.
我上面的例子是一个简单的有点sudo示例,但我相信如果我可以对其进行url编码,它会通过,我甚至尝试过像:
MESSAGE='I am trying to post this information'
MESSAGE=$(php -r 'echo urlencode("'$MESSAGE'");')
Run Code Online (Sandbox Code Playgroud)
但PHP错误..任何想法?如何在没有php执行的情况下传递$ MESSAGE中的变量?
我正在运行 GitLab CE 11.5.0,我的一项工作生成了一个工件,我想从中下载单个文件。
将完整的工件存档下载为 zip 文件,如下所述:
$ export TOKEN="12345678"
$ export GITLAB_HOST="gitlab.example.com"
$ export PROJECT_ID="foo"
$ export JOB_NAME="bundle"
$ curl --header "PRIVATE-TOKEN: $TOKEN" \
"https://$GITLAB_HOST/api/v4/projects/$PROJECT_ID/jobs/artifacts/master/download?job=$JOB_NAME" -o artifacts.zip
Run Code Online (Sandbox Code Playgroud)
存档内容如下所示:
$ unzip -l artifacts.zip
Archive: artifacts.zip
Length Date Time Name
--------- ---------- ----- ----
262107 02-18-2019 16:17 build/ui-bundle.zip
--------- -------
262107 1 file
Run Code Online (Sandbox Code Playgroud)
现在我只想从该存档中下载一个文件,如此处所述。
$ export FILE_PATH="build/ui-bundle.zip"
$ curl --header "PRIVATE-TOKEN: $TOKEN" \
"https://$GITLAB_HOST/api/v4/projects/$PROJECT_ID/jobs/artifacts/master/raw/$FILE_PATH?job=$JOB_NAME"
Run Code Online (Sandbox Code Playgroud)
但Gitlab似乎找不到请求的文件:
{"error":"404 Not Found"}
Run Code Online (Sandbox Code Playgroud)
我意识到工件存档是一个 zip 文件,仅包含一个嵌入式 zip 文件,但我认为这应该没有什么区别。
有人可以帮忙吗?
我需要通过curl为命令行设置特定nagios主机的计划停机时间.我是这样做的吗?
这是我已经用于从命令行启用/禁用服务/主机通知的内容.
curl -d "some input here" url "user:pass"
Run Code Online (Sandbox Code Playgroud)
就像我需要为计划停机时间做的那样.现在的问题是停机时间选项需要更多选项,即启动时间,结束时间,评论等.
那么如何通过命令行中的curl完成它呢?
curl -d " some key value pair(hostname,servicename" url "username:passowrd"
Run Code Online (Sandbox Code Playgroud)
这将从命令行打开和关闭服务/主机通知.所以我想以这种方式使用curl来为特定的nagios服务器提供停机时间.
上面的脚本不起作用,因为nagios的停机时间选项需要更多的参数,我试图在脚本中注入这些参数.但它没有那样做.我们也需要提供starttime,endtime和comment值.
另外,我已经尝试了curl的选项--form和--form-string with the script ...无法通过.
理想的想法是,不是去Nagios web界面,我们想从命令行完成这件事(我们已经成功完成了服务/主机服务和通知).
希望我现在绝对清楚.
TIA
巴斯卡尔
我想使用curl发出发布请求。正文是一个二进制文件,但我也希望curl 对 url 搜索参数进行编码。
curl --request POST \
--header 'Content-Type:application/octet-stream' \
--data-binary "@file.txt" \ # The body part, raw, not encoded
--data-urlencode "name=john" \ # The url-search-param part, encoded
"https://example.com"
Run Code Online (Sandbox Code Playgroud)
问题是,curl 将其视为--data-urlencode正文的一部分,我想要的是将其name=john附加到 url 部分,如下所示:https://example.com?name=john该--data-binary部分作为正文发送POST。(实际上,搜索参数是一个带有“无效”url 字符的字符串,需要对其进行编码)
--data-urlencodeTLDR:我想像发出请求一样使用GET(附加参数)并POST --data-binary设置实际POST主体。
快速的谷歌搜索为我提供了要使用的信息--get/-G但这会将请求转换为GET我不想要的请求,因此已经有十几个关于此的问题(但没有一个涵盖我的情况):
--data-binary内容成为 url 的一部分(?!)。POST- 是的,我想要那个,但也使用...发送二进制文件如何对字符串进行urlencode并将其嵌入到URL中?请注意,我并不是要获取或发布数据,因此curl 的-Gand --data和--data-urlencode选项似乎并没有起作用。
例如,如果您使用
curl -G http://example.com/foo --data-urlencode "bar=spaced data"
Run Code Online (Sandbox Code Playgroud)
在功能上等同于
curl http://example.com/foo?bar=spaced%20data"
Run Code Online (Sandbox Code Playgroud)
这是不希望的。
我有一个foo/bar必须经过urlencode foo%2fbar并嵌入到URL中的字符串。
curl http://example.com/api/projects/foo%2fbar/events
Run Code Online (Sandbox Code Playgroud)
一个假设的解决方案(如果我可以找到类似的东西)将是在bash中预处理数据(如果存在某种urlencode功能的话)。
DATA=foo/bar
ENCODED=`urlencode $DATA`
curl http://example.com/api/projects/${ENCODED}/events
Run Code Online (Sandbox Code Playgroud)
另一个假设的解决方案(如果我能找到类似的东西)将是卷曲的切换,类似于以下内容:
curl http://example.com/api/projects/{0}/events --string-urlencode "0=foo/bar"
Run Code Online (Sandbox Code Playgroud)
我正在寻找这个问题的答案的特定原因是Gitlab API。例如,gitlab get单个项目 NAMESPACE/PROJECT_NAME是URL编码的,例如。/api/v3/projects/diaspora%2Fdiaspora(其中/以表示%2F)。除此之外,您可以请求项目中的各个属性,因此最终得到一个URL,例如http://example.com/projects/diaspora%2Fdiaspora/events
尽管这个问题是特定于gitlab的,但我想它通常总体上适用于REST API,而令我惊讶的是我找不到关于stackoverflow或Internet搜索的预先存在的答案。
我需要使用将在 BusyBox Ash、Dash、Bash 和 ZSH 中运行的 shell 函数对字符串进行 URL 编码。
\n\n它将在不同的 Docker 容器中运行,因此安装尽可能少的依赖项会更好。
\n\n笔记:
\n\n问题“在 bash 脚本中对字符串进行 URL 编码”要求提供特定于 Bash 的脚本,唯一提供的答案取决于容器上安装的 PHP。
问题“如何为curl命令对数据进行urlencode? ”特定于curl,但肯定对非特定答案开放。然而,这 25 个答案似乎都不适用。那里的答案之一只能将数据发送到curl,而有些特定于bash或ksh,其他一些则需要Perl , PHP , Python , Lua , NodeJS , Ruby , gridsite -clients,uni2ascii,jq,awk或sed安装。其中之一不需要额外的依赖项,但不保留a、1和 等字符~。
我期望得到什么:
\n\n$> urlencode \'/\'\n%2f\n\n$> urlencode \'\xc3\xa7\'\n%c3%a7\n\n$> …Run Code Online (Sandbox Code Playgroud) bash ×5
curl ×5
urlencode ×4
url ×3
encoding ×2
linux ×2
shell ×2
awk ×1
command-line ×1
for-loop ×1
gitlab ×1
gitlab-api ×1
gitlab-ci ×1
http ×1
http-delete ×1
http-post ×1
nagios ×1
posix ×1
python ×1
request ×1
rest ×1
sed ×1
unix ×1
url-encoding ×1
urldecode ×1
urllib ×1
web-services ×1
wget ×1