【发布时间】:2019-10-10 20:00:57
【问题描述】:
我正在尝试从 Elasticsearch 索引的 bash 脚本中的 cURL GET 命令获取特定的 json 字段。为此,我设置了一个脚本来将变量传递给 cURL 命令。对这些值进行硬编码会给出正确的响应,因此我只需要弄清楚如何使用变量,以便针对不同的目的获得不同的响应。
这是期望的结果和当前的工作命令:
docs=`curl -k -u admin:hunter1 -HContent-Type:application/json -X GET 'https://10.10.15.15:9200/logstash-linux-pci-2019.03.15/_stats' | jq '._all.primaries.docs.count'`
echo "The document count is "$docs
文档数为 183,283,999
我正在从一个可能看起来像这样的文本文件中导入逐行索引:
list.txt
logstash-linux-pci-2019.03.15
logstash-linux-pci-2019.03.16
logstash-linux-pci-2019.03.17
logstash-linux-pci-2019.03.18
我需要将一个 ip 变量与这些 ^ 一起放入 curl 命令中:
reindex.sh
user='admin'
pass='hunter1'
ip='https://10.10.15.15:9200'
indexList=(`cat "list.txt"`)
for index in "${indexList[@]}"
do
echo "Reindexing: "$index
docs=`curl -k -u $user:$pass -HContent-Type:application/json -X GET '$ip/$index/_stats' | jq '._all.primaries.docs.count'`
echo "index "$index" has a doc count of "$docs
done
echo "Complete!"
在上面的例子中唯一不起作用的是....GET '$ip/$index/_stats'....
我已经尝试在命令中将变量硬编码为纯文本,就像普通的 curl GET 一样,它工作正常,我可以获得硬编码索引的文档计数。
我试过了:
....GET '$ip/$index/_stats'....
抛出错误:
curl: (52) Empty reply from server
.
....GET "${ip}/${index}/_stats"....
抛出错误:
curl: (52) Empty reply from server
.
....GET 'http://10.10.15.15/'"$index"'/_stats'....
抛出错误:
curl: (52) Empty reply from server
.
....GET '$ip/$index/_stats'....
抛出错误:
curl: (52) Empty reply from server
.
url="${ip}/${index}/_stats"
....GET $url ....
抛出错误:
curl: (52) Empty reply from server
.
我已经在网上搜索了几个小时,但我发现的任何东西都与 curl PUT 和将变量作为 json 放到服务器上有关。如何使用可变 URL 和索引 curl?
【问题讨论】: