【发布时间】:2020-08-31 00:49:33
【问题描述】:
下面是我的 bash 脚本。
#!/bin/bash
message=$1
hostname=$2
severity=$3
eventname=$4
tagpath=$5
appname=$6
data="{"action":"EventsRouter","method":"add_event","data":[{"summary":"$message"},"device":"$hostname","message": "$message $eventname $tagpath","component":"$appname","severity":"$severity","evclasskey":"nxlog","evclass":"/nxlog/perf","monitor":"localhost"}],"type":"rpc","tid":1}"
echo "Total number of args : $#"
echo "message = $message"
echo "hostname = $hostname"
echo "appname = $appname"
echo "data = $data"
curl -u uname:password -k https://myurlcom/zport/dmd/evconsole_router -d $data
当我尝试使用 sh tcp.sh value value value value value 运行时
host:
'host,component:host,severity:host,evclasskey:nxlog,evclass:/nxlog/perf,monitor:localhost}],type:rpc,tid:1}'
is not a legal name (unexpected end of input) Total number of args : 6
message = message hostname = test appname = host data = curl: option
-d: requires parameter
我看到数据没有包含任何价值。 此 json 必须按此顺序发送,才能在端点中被接受。帮我纠正一下。
【问题讨论】:
-
我推荐使用像
jq这样的工具来生成有效的JSON,而不是依靠参数扩展来做到这一点。