New Relicがそれを正しく解析できるように、一部のJSONをJQを使用して分割する必要があります。これは、JSONがダッシュボードにプッシュされたときに特定の形式でのみ提供されるためです。
私はWPCLIでbashスクリプトを使用し、JQを使用してJSON出力形式を指定しています。
以下は私のスクリプトです。
#!/bin/bash
#for d in /var/www/* ; do
# echo "$d"
#done
for f in /var/www/*/public_html/; do
if [[ -d $f ]]; then
#echo "$f"
cd $f;
SITEURL="$(wp option get siteurl)"
USERS="$(wp user list --fields=display_name,user_email,user_registered,roles --format=json | jq .[])"
PLUGINS="$(wp plugin list --format=json | jq .[])"
echo "${SITEURL}" "${USERS}" "${PLUGINS}"
cd ../.. ;
fi
done
以下は私が得た結果です...
cat wp-info-output
http://mytest1.com {
"display_name": "testuser1",
"user_email": "[email protected]",
"user_registered": "2018-11-26 17:44:09",
"roles": "administrator"
} {
"name": "akismet",
"status": "inactive",
"update": "available",
"version": "4.0.8"
}
{
"name": "hello",
"status": "inactive",
"update": "none",
"version": "1.7"
}
こんな姿が必要だ…
[
{
"eventType":"WordpressSite",
"siteurl":"http://mytest1.com"
},
{
"eventType":"WordpressPlugins",
"pluginName": "akismet",
"status": "inactive",
"update": "available",
"version": "4.0.8"
},
{
"eventType":"WordpressPlugins",
"pluginName": "hello",
"status": "inactive",
"update": "none",
"version": "1.7"
}
{
"eventType":"Users",
"display_name": "testuser2",
"user_email": "[email protected]",
"user_registered": "2018-11-26 17:44:04",
"roles": "administrator"
}
]
私の考えでは、jqがJSONの書式設定に対する答えであると思うが、いくつかの難しさがあります。
ベストアンサー1
すべてのJSONオブジェクトを取得して1ビット配列に混合したいようです。試してみてください。
siteurl=$(wp option get siteurl)
users=$(
wp user list --fields=display_name,user_email,user_registered,roles --format=json) |
jq '.[] | .eventType = "WordpressUser"'
)
plugins=$( wp plugin list --format=json | jq '.[] | .eventType = "WordpressPlugin"' )
{
printf '{"eventType":"WordpressSite","siteurl":"%s"}\n' "$(wp option get siteurl)"
echo "$plugins"
echo "$users"
} | jq -s .