标签: curl

将 jq 输出合并为逗号分隔的字符串

我正在尝试curl一些返回 json 文件的 URL,然后我想从中解析主机并创建一个逗号分隔的字符串。

我有第一部分工作

curl -s -u "admin:admin" -H "X-Requested-By: ambari" "https://hbasecluster.net/api/v1/clusters/mycluster/services/ZOOKEEPER/components/ZOOKEEPER_SERVER" | jq -r '.host_components[].HostRoles.host_name'
Run Code Online (Sandbox Code Playgroud)

返回

zk0-mycluster.net
zk1-mycluster.net
zk2-mycluster.net
Run Code Online (Sandbox Code Playgroud)

现在我想将这些加入一个字符串中

zk0-mycluster.net,zk1-mycluster.net,zk2-mycluster.net
Run Code Online (Sandbox Code Playgroud)

command-line curl json jq

36
推荐指数
3
解决办法
6万
查看次数

通过不良连接下载大文件

是否有现有工具可用于通过不良连接下载大文件?

我必须定期下载一个相对较小的文件:300 MB,但慢速(80-120 KB/秒)TCP 连接在 10-120 秒后随机中断。(这是一家大公司的网络。我们多次联系他们的管理员(在印度工作),但他们不能或不想做任何事情。)问题可能出在他们的反向代理/负载平衡器上。

到目前为止,我使用了 pcurl 的修改版本:https : //github.com/brunoborges/pcurl

我改变了这一行:

curl -s --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
Run Code Online (Sandbox Code Playgroud)

对此:

curl -s --retry 9999 --retry-delay 3 --speed-limit 2048 --speed-time 10 \
    --retry-max-time 0 -C - --range ${START_SEG}-${END_SEG} -o ${FILENAME}.part${i} ${URL} &
Run Code Online (Sandbox Code Playgroud)

我不得不补充,--speed-limit 2048 --speed-time 10因为连接失败时通常会挂起几分钟。

但是最近连这个脚本都完成不了。

一个问题是它似乎忽略了该-C -部分,因此在重试后它不会“继续”该段。它似乎截断了相关的临时文件,并在每次失败后从头开始。(我认为--range-C选项不能一起使用。)

另一个问题是该脚本同时下载所有段。它不能有 300 个分段,其中一次只能下载 10 个分段。

我正在考虑为此特定目的用 C# 编写一个下载工具,但是如果有一个现有的工具,或者 curl 命令可以使用不同的参数正常工作,那么我可以腾出一些时间。

更新 1:附加信息:不应删除并行下载功能,因为它们有每个连接的带宽限制(80-120 KB / 秒,主要是 80),因此 10 个连接可以导致 10 倍的加速。我必须在 1 …

download http curl

35
推荐指数
3
解决办法
2万
查看次数

如何使用 curl 从 sourceforge 下载内容?

只需输入http://downloads.sourceforge.net/project/romfs/genromfs/0.5.2/genromfs-0.5.2.tar.gz在浏览器上工作正常,但我试图从有限的 CLI 环境下载公用事业。

下面只返回一个空文件:

curl http://downloads.sourceforge.net/project/romfs/genromfs/0.5.2/genromfs-0.5.2.tar.gz
Run Code Online (Sandbox Code Playgroud)

如何使用 curl 从 sourceforge 获取 genromfs-0.5.2.tar.gz?

curl

34
推荐指数
2
解决办法
3万
查看次数

如何检查 curl 等命令是否正确完成?

我正在使用 curl 通过 HTTP 帖子将文件上传到服务器。

curl -X POST -d@myfile.txt server-URL
Run Code Online (Sandbox Code Playgroud)

当我在命令行上手动执行此命令时,我会收到来自服务器的响应,例如"Upload successful". 但是,如果我想通过脚本执行此 curl 命令,如何确定我的 POST 请求是否成功?

http error-handling curl

32
推荐指数
2
解决办法
14万
查看次数

curl url 调用 for 循环?

我正在使用 bash,我正在尝试在 for 循环中进行 curl url 调用。

下面是我简单的 curl 调用 -

curl -v --header "Connection: keep-alive" "localhost:8080/user?userid=52010&client_id=20&attr=0"
Run Code Online (Sandbox Code Playgroud)

我试图在 for 循环中进行 100 次 curl 调用 -

for ((i=1;i<=100;i++)); do   curl -v --header "Connection: keep-alive" "localhost:8080/user?uuid=52010&model_id=20&attr=0" done
Run Code Online (Sandbox Code Playgroud)

我尝试在命令行中运行上面的代码,但它不起作用,它给了我这样的 -

>
Run Code Online (Sandbox Code Playgroud)

任何想法我做错了什么?

shell curl

32
推荐指数
1
解决办法
15万
查看次数

如何在 cURL 命令行中信任自签名证书?

我使用以下 Makefile使用Let's Encrypt 推荐为 foo.localhost 创建了一个自签名证书:

include ../.env

configuration = csr.cnf
certificate = self-signed.crt
key = self-signed.key

.PHONY: all
all: $(certificate)

$(certificate): $(configuration)
    openssl req -x509 -out $@ -keyout $(key) -newkey rsa:2048 -nodes -sha256 -subj '/CN=$(HOSTNAME)' -extensions EXT -config $(configuration)

$(configuration):
    printf "[dn]\nCN=$(HOSTNAME)\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:$(HOSTNAME)\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth" > $@

.PHONY: clean
clean:
    $(RM) $(configuration)
Run Code Online (Sandbox Code Playgroud)

然后我将它分配给了一个网络服务器。我已经验证服务器返回相关证书:

$ openssl s_client -showcerts -connect foo.localhost:8443 < /dev/null
CONNECTED(00000003)
depth=0 CN = foo.localhost
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = …
Run Code Online (Sandbox Code Playgroud)

curl https

31
推荐指数
5
解决办法
10万
查看次数

`curl | 和有什么不一样?sh` 和`sh -c "$(curl)"`?

Docker 的一种简单安装方法(例如)是这样的:

curl -sSL https://get.docker.com/ | sh
Run Code Online (Sandbox Code Playgroud)

但是,我也看到了一些看起来像这样的(使用 Docker 示例):

sh -c "$(curl -sSL https://get.docker.com/)"
Run Code Online (Sandbox Code Playgroud)

它们在功能上似乎相同,但是否有理由使用一个而不是另一个?或者这只是一种偏好/审美?

(请注意,运行来自未知来源的脚本时要非常小心。)

shell pipe curl command-substitution docker

30
推荐指数
3
解决办法
2万
查看次数

将 jq 输出设置为 Bash 变量

我正在使用 curl 从这样的休息 api 中获取 JSON:

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc)
echo "${content}"| jq -r '.data.value'
Run Code Online (Sandbox Code Playgroud)

这产生了我需要的价值。然而; 当我将上面的代码更改为如下所示时:

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc)
username=$(echo "${content}"| jq -r '.data.value')
echo $username
Run Code Online (Sandbox Code Playgroud)

不产生任何东西。如何更改此设置以便为用户名变量分配输出?

bash curl json jq

30
推荐指数
3
解决办法
7万
查看次数

使用自定义 IP 发送 CURL 请求

不应该吗?假设我不需要响应,我只想发送请求。难道我们不能改变 tcp/ip 标头,因为我们的计算机发送它吗?我可能错过了一些东西,只是很好奇,在大学里学习。

curl

29
推荐指数
2
解决办法
11万
查看次数

使用 curl 获取 URL 的重定向目标

我想检查单个 URL 重定向的位置。一个例子是来自谷歌搜索结果页面的链接(点击总是通过谷歌服务器)。

我可以这样做curl吗?

url curl

25
推荐指数
4
解决办法
5万
查看次数