簡體   English   中英

Bash 腳本請求正文無法使用 json

[英]Bash script Request body is un-json-able

我試圖將數據推送到 API,為此我收到以下錯誤:

("Request body is not unjson()-able: %s" % body)
DirectException: Request body is not unjson()-able: '{"action":"EventsRouter","method":"add_event","data":[{"summary":"mes","device":"hos","message":"message","component":"sev","severity":"ap","evclasskey":"nxlog","evclass":"nxlog","monitor":"localhost"}],"type":"rpc","tid":2}'

當前 bash 文件:

#!/bin/bash
message=$1
hostname=$2
appname=$3
severity=$4

data='{"action":"EventsRouter","method":"add_event","data":[{"summary":"'$message'","device":"'$hostname'","message":"message","component":"'$appname'","severity":"'$severity'","evclasskey":"nxlog","evclass":"nxlog","monitor":"localhost"}],"type":"rpc","tid":2}'

echo "Total number of args : $#"

echo "message = $message"
echo "hostname = $hostname"
echo "appname = $appname"
echo "data = $data"

curl -u "Eve:eve@123" -k "https://myurl.com/zport/dmd/evconsole_router" -d "'$data'" -H "Content-Type:application/json"

首先,這是什么原因,我該如何糾正。 我只在測試時發送簡單的值:

sh tcp.sh mes hos sev ap

但是,當我直接使用 curl 數據時,它正在工作。

curl -u Eve:eve@123 -k https://myurl.com/zport/dmd/evconsole_router -d '{"action":"EventsRouter", "method":"add_event","data":[{"summary":"test","device":"test","message":"msg","component":"testhost","severity":"5", "evclasskey":"nxlog", "evclass":"/nxlog/perf","monitor":"localhost"}],"type":"rpc","tid":2}' -H "Content-Type:application/json"

{"uuid": "1654584c-5f86-489e-a5e7-35d45e462066", "action": "EventsRouter", "result": {"msg": "Created event", "success": true},"tid": 2, "type": "rpc", "method": "add_event"}

其次,這即將自動讀取多條日志消息,如果日志消息中有',',\,/等特殊字符,是否會影響我的bash輸入?如果是,我如何消除它?

你能試試這個語法並檢查執行嗎

data=$(cat <<EOF
{"action":"EventsRouter","method":"add_event","data":[{"summary":"$message","device":"$hostname","message":"message","component":"$appname","severity":"$severity","evclasskey":"nxlog","evclass":"nxlog","monitor":"localhost"}],"type":"rpc","tid":2}
EOF
)

Curl 命令語法如下

curl -u "Eve:eve@123" -k "https://myurl.com/zport/dmd/evconsole_router" -d "$data" -H "Content-Type:application/json"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM