Bash CURL GET请求输出到单个JSON文件,包括服务器响应和CURL信息



我正在使用shell脚本执行curl测试,需要将curl服务器响应与curl信息(如time_connect、http_code等(一起保存到JSON中。我正在尝试以下代码将输出写入JSON

HOST_ADDR="http://$mynds/"
do_request(){
echo $(curl $HOST_ADDR --silent -w "n{n
"HttpCode": %{http_code},n
"NumRedirects":%{num_redirects},n
"NumConnects":%{num_connects},n
"SizeDownloadInBytes":%{size_download},n
"SizeHeaderInBytes":%{size_header},n
"SizeRequestInBytes":%{size_request},n
"SizeUploadInBytes":%{size_upload},n
"SpeedUploadBPS":%{speed_upload},n
"SpeedDownloadBPS":%{speed_download},n
"TimeAppConnectSec":%{time_appconnect},n
"TimeConnectSec":%{time_connect},n
"TimeNamelookupSec":%{time_namelookup},n
"TimePreTransferSec":%{time_pretransfer},n
"TimeRedirectSec":%{time_redirect},n
"TimeStartTransferSec":%{time_starttransfer},n
"TimeTotalSec":%{time_total},n
"UrlEffective":"%{url_effective}"
}" -s)
}
do_request

我得到的简单输出:

{"hostIPAddr":"0.0.0.0","hostname":"vm01","text":"Hello World from 
vm01"}` and `{ "HttpCode": 200, "NumRedirects":0, "NumConnects":1, 
"SizeDownloadInBytes":85, "SizeHeaderInBytes":263, 
"SizeRequestInBytes":99, "SizeUploadInBytes":0, 
"SpeedUploadBPS":0.000, "SpeedDownloadBPS":14.000, 
"TimeAppConnectSec":0.000000, "TimeConnectSec":5.553587, 
"TimeNamelookupSec":5.097553, "TimePreTransferSec":5.553868, 
"TimeRedirectSec":0.000000, "TimeStartTransferSec":5.827584, 
"TimeTotalSec":5.827704, "UrlEffective":"http://dns" }

我得到了两个JSON输出,一个用于curl信息,另一个来自服务器。如何将这两个输出组合为一个JSON变量?请帮忙。

guid_id=$(uuidgen)
file_1="curlJsonRes_$guid_id.json"
file_2="curlMetaRes_$guid_id.json"
do_request(){
echo $(curl $HOST_ADDR --silent --output $file_1 -w "n{n
"HttpCode": %{http_code},n
"NumRedirects":%{num_redirects},n
"NumConnects":%{num_connects},n
}")
} > $file_2
do_request
#Merging file outputs
echo $(jq -s '.[0] * .[1]' $file_1 $file_2) > $RESULTS_FILE
rm $file_1
rm $file_2

最新更新