假设我是一个Unix新手:
curl http://example.com/?update_=1
我想实现的是使用这种curl技术运行另一个“脚本”,
我读到curl在一个命令中接受多个URL,但我不确定这是否会顺序或“并行”处理URL。
elcex8rz1#
它很可能会按顺序处理它们(为什么不直接测试它)。但你也可以这样做:1.创建一个名为curlrequests.sh的文件1.把它放在一个像这样的文件中:
curlrequests.sh
curl http://example.com/?update_=1 curl http://example.com/?update_=3 curl http://example.com/?update_=234 curl http://example.com/?update_=65
1.保存文件,并使其可执行与chmod:
chmod
chmod +x curlrequests.sh
1.运行您的文件:
./curlrequests.sh
或
/path/to/file/curlrequests.sh
顺便说一下,您可以使用&&链接请求,如下所示:
&&
curl http://example.com/?update_=1 && curl http://example.com/?update_=2 && curl http://example.com?update_=3`
并使用&并行执行:
&
curl http://example.com/?update_=1 & curl http://example.com/?update_=2 & curl http://example.com/?update_=3
tcbh2hod2#
根据curl man page:您可以在命令行上指定任意数量的URL。它们将按照指定的顺序依次获取。因此,最简单和最有效的(curl将把它们都发送到一个单一的TCP连接[那些到同一个源])方法将把它们都放在一个curl调用上,例如:
curl http://example.com/?update_=1 http://example.com/?update_=2
htzpubme3#
这里没有提到的另一个关键方法是使用同一个TCP连接用于多个HTTP请求,并且只使用一个curl命令。这对于保存网络带宽、客户端和服务器资源以及使用多个curl命令的总体需求非常有用,因为curl默认情况下在到达命令结尾时关闭连接。保持连接打开并重用它对于运行Web应用程序的标准客户端来说非常常见。从curl版本7.36.0开始,--next或-:命令行选项允许链接多个请求,并且可以在命令行和脚本中使用。
--next
-:
例如:
curl http://example.com/?update_=1 -: http://example.com/foo
curl http://example.com/?update_=1 -: -d "I am posting this string" http://example.com/?update_=2
curl -o 'my_output_file' http://example.com/?update_=1 -: -d "my_data" -s -m 10 http://example.com/foo -: -o /dev/null http://example.com/random关于curl manpage:
curl -o 'my_output_file' http://example.com/?update_=1 -: -d "my_data" -s -m 10 http://example.com/foo -: -o /dev/null http://example.com/random
-:,--next
告诉curl对以下URL和相关选项使用单独的操作。这允许您发送多个URL请求,每个URL请求都有自己的特定选项,例如,不同的用户名或自定义请求。-:,--next将重置所有本地选项,只有全局选项的值将保留到-:,--next指令之后的操作。全局选项包括-v、--verbose、--trace、--trace-asktop和--fail-early。例如,您可以在一个命令行中执行GET和POST:curl www1.example.com--next -d postthis www2.example.com在7.36.0中添加。
mbzjlibv4#
我迟到了13年,但与这里的所有其他答案相比,我有一些新的东西要补充。我发现你在URL的末尾有一个号码。我最近遇到了同样的问题,这个数字是从0到13的连续数字。以下是我如何在一行中解决它:
curl http://example.com/?update_=[0-13]
例如,如果你只想要偶数,你可以指定跳转:
curl http://example.com/?update_=[0-13:2]
以下是curl手册中的原文:URL语法与协议相关。在RFC 3986中有详细的描述。您可以通过在大括号内编写部件集并将URL引起来来指定多个URL或URL的部件,如下所示:"http://site.{one,two,three}.com"或者,您可以通过使用[]获得字母数字序列的序列,如:"ftp://ftp.example.com/file[1-100].txt""ftp://ftp.example.com/file[001-100].txt"(带前导零)"ftp://ftp.example.com/file[a-z].txt"不支持嵌套序列,但可以使用多个相邻的序列:"http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
"http://site.{one,two,three}.com"
"ftp://ftp.example.com/file[1-100].txt"
"ftp://ftp.example.com/file[001-100].txt"
"ftp://ftp.example.com/file[a-z].txt"
"http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
ndh0cuux5#
我认为这使用了更多的本地功能
//printing the links to a file $ echo "https://stackoverflow.com/questions/3110444/ https://stackoverflow.com/questions/8445445/ https://stackoverflow.com/questions/4875446/" > links_file.txt $ xargs curl < links_file.txt
anauzrmj6#
按照所需的顺序编写一个包含两个curl请求的脚本,并通过cron运行它,如
#!/bin/bash curl http://mysite.com/?update_=1 curl http://mysite.com/?the_other_thing
n53p2ov07#
这将做你想要的,使用一个输入文件,是超级快
#!/bin/bash IFS=$'\n' file=/path/to/input.txt lines=$(cat ${file}) for line in ${lines}; do curl "${line}" done IFS="" exit ${?}
输入文件中每行一个条目,它将遵循输入文件的顺序保存为whatever.sh并使其可执行
ws51t4hk8#
也可以使用括号{}假设你想 curl :a. wildfly_jdbc_totalB. wildfly_jdbc_currently
curl http://127.0.0.1:9990/metrics/vendor/wildfly_datasources_jdbc_{total,currently}
8条答案
按热度按时间elcex8rz1#
它很可能会按顺序处理它们(为什么不直接测试它)。但你也可以这样做:
1.创建一个名为
curlrequests.sh
的文件1.把它放在一个像这样的文件中:
1.保存文件,并使其可执行与
chmod
:1.运行您的文件:
或
顺便说一下,您可以使用
&&
链接请求,如下所示:并使用
&
并行执行:tcbh2hod2#
根据curl man page:
您可以在命令行上指定任意数量的URL。它们将按照指定的顺序依次获取。
因此,最简单和最有效的(curl将把它们都发送到一个单一的TCP连接[那些到同一个源])方法将把它们都放在一个curl调用上,例如:
htzpubme3#
这里没有提到的另一个关键方法是使用同一个TCP连接用于多个HTTP请求,并且只使用一个curl命令。
这对于保存网络带宽、客户端和服务器资源以及使用多个curl命令的总体需求非常有用,因为curl默认情况下在到达命令结尾时关闭连接。
保持连接打开并重用它对于运行Web应用程序的标准客户端来说非常常见。
从curl版本7.36.0开始,
--next
或-:
命令行选项允许链接多个请求,并且可以在命令行和脚本中使用。例如:
curl http://example.com/?update_=1 -: http://example.com/foo
curl http://example.com/?update_=1 -: -d "I am posting this string" http://example.com/?update_=2
curl -o 'my_output_file' http://example.com/?update_=1 -: -d "my_data" -s -m 10 http://example.com/foo -: -o /dev/null http://example.com/random
关于curl manpage:
-:,--next
告诉curl对以下URL和相关选项使用单独的操作。这允许您发送多个URL请求,每个URL请求都有自己的特定选项,例如,不同的用户名或自定义请求。
-:
,--next
将重置所有本地选项,只有全局选项的值将保留到-:,--next指令之后的操作。全局选项包括-v、--verbose、--trace、--trace-asktop和--fail-early。例如,您可以在一个命令行中执行GET和POST:
curl www1.example.com--next -d postthis www2.example.com
在7.36.0中添加。
mbzjlibv4#
我迟到了13年,但与这里的所有其他答案相比,我有一些新的东西要补充。
我发现你在URL的末尾有一个号码。我最近遇到了同样的问题,这个数字是从0到13的连续数字。以下是我如何在一行中解决它:
例如,如果你只想要偶数,你可以指定跳转:
以下是curl手册中的原文:
URL语法与协议相关。在RFC 3986中有详细的描述。
您可以通过在大括号内编写部件集并将URL引起来来指定多个URL或URL的部件,如下所示:
"http://site.{one,two,three}.com"
或者,您可以通过使用[]获得字母数字序列的序列,如:
"ftp://ftp.example.com/file[1-100].txt"
"ftp://ftp.example.com/file[001-100].txt"
(带前导零)"ftp://ftp.example.com/file[a-z].txt"
不支持嵌套序列,但可以使用多个相邻的序列:
"http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html"
ndh0cuux5#
我认为这使用了更多的本地功能
anauzrmj6#
按照所需的顺序编写一个包含两个curl请求的脚本,并通过cron运行它,如
n53p2ov07#
这将做你想要的,使用一个输入文件,是超级快
输入文件中每行一个条目,它将遵循输入文件的顺序
保存为whatever.sh并使其可执行
ws51t4hk8#
也可以使用括号{}
假设你想 curl :
a. wildfly_jdbc_total
B. wildfly_jdbc_currently