Bash 无法使用curl:参数太长将大文件发送到elasticsearch
这是我用来将一些文档导出到elasticsearch的脚本,但运气不好Bash 无法使用curl:参数太长将大文件发送到elasticsearch,bash,shell,curl,Bash,Shell,Curl,这是我用来将一些文档导出到elasticsearch的脚本,但运气不好 #!/bin/ksh set -v trap read debug date=$(date +%Y-%m-%d); echo $date; config_file="/home/p.sshanm/reports_elastic.cfg"; echo $config_file; URL="http://p-acqpes-app01.wirecard.sys:9200/reports-"$date""; echo $URL;
#!/bin/ksh
set -v
trap read debug
date=$(date +%Y-%m-%d);
echo $date;
config_file="/home/p.sshanm/reports_elastic.cfg";
echo $config_file;
URL="http://p-acqpes-app01.wirecard.sys:9200/reports-"$date"";
echo $URL;
find /transfers/documents/*/done/ -type f -name "ABC-Record*_${date}*.csv"|
while IFS='' read -r -d '' filename
do
echo "filename : ${filename}"
var=$(base64 "$filename"| perl -pe 's/\n//g');
#if i use below it will fail as argument too long , so i used with curl option @
# var1= $(curl -XPUT 'http://localhost:9200/reports-'$date'/document/reports?pipeline=attachment&pretty' -d' { "data" : "'$var'" }')
var1=$(curl -X PUT -H "Content-Type: application/json" -d @- "$URL" >>CURLDATA
{ "data": "$var" }
CURL_DATA)
done;
如果我在下面用它作为
var1= $(curl -XPUT 'http://localhost:9200/reports-'$date'/document/reports?pipeline=attachment&pretty' -d' { "data" : "'$var'" }')
将失败,如下所示,因此我使用了curl选项@
争论太长
您从
stdin
读取的语法错误,应该是(您可以尝试在URL
作为curl-XPUT添加双引号吗?”http://localhost:9200/reports-$date/document/reports?pipeline=attachment&pretty“-d'{“data”:““$var”“}”
curl:/usr/bin/curl:无法执行[参数列表太长]使用@
选项有效吗?使用它有问题吗?是的,但出现语法错误。第31行:第32行的语法错误:)'意外的var1=$(curl-X PUT-H“Content Type:application/json”-d-“$URL”>>CURLDATA{“data”:“$var”}curl\u data)`再次失败var1=$(curl-X PUT-H“Content-Type:application/json”-d@-“$URL”@code初学者:您可以先尝试而不将其放入变量中吗?请记住,在开始和结束时,除限制器curl\u DATA
之间不应该有任何前导或尾随空格
curl -X PUT -H "Content-Type: application/json" -d @- "$URL" <<CURL_DATA
{ "data": "$var" }
CURL_DATA