我正在尝试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) 是否有现有工具可用于通过不良连接下载大文件?
我必须定期下载一个相对较小的文件: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 …
只需输入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 通过 HTTP 帖子将文件上传到服务器。
curl -X POST -d@myfile.txt server-URL
Run Code Online (Sandbox Code Playgroud)
当我在命令行上手动执行此命令时,我会收到来自服务器的响应,例如"Upload successful". 但是,如果我想通过脚本执行此 curl 命令,如何确定我的 POST 请求是否成功?
我正在使用 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)
任何想法我做错了什么?
我使用以下 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) 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)
它们在功能上似乎相同,但是否有理由使用一个而不是另一个?或者这只是一种偏好/审美?
(请注意,运行来自未知来源的脚本时要非常小心。)
我正在使用 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)
不产生任何东西。如何更改此设置以便为用户名变量分配输出?
不应该吗?假设我不需要响应,我只想发送请求。难道我们不能改变 tcp/ip 标头,因为我们的计算机发送它吗?我可能错过了一些东西,只是很好奇,在大学里学习。
我想检查单个 URL 重定向的位置。一个例子是来自谷歌搜索结果页面的链接(点击总是通过谷歌服务器)。
我可以这样做curl吗?