Add a Key Value Pair in JSON Object Using JQ and Bash
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I have a script that crawls through a directory and pulls info from WP sites and builds a JSON array of objects that will eventually be fed into a visual dashboard. The script works perfectly but I can't seem to get the siteurl key to post in every object as it does in the first.
The key-pairs that have null
need to be replaced with the corresponding siteurl
within its array.
I feel I should be able to do this with jq and the --arg name value
option but I clearly am doing something wrong. Not sure if I'm not passing the variables correctly or if it's an issue with WPCLI.
Output and script are below.
[
"eventType": "WordpressSite",
"siteurl": "http://mytest1.com"
,
"eventType": "WordpressPlugin",
"plugin_name": "akismet",
"plugin_status": "inactive",
"plugin_update": "available",
"plugin_version": "4.0.8",
"siteurl": null
,
"eventType": "WordpressPlugin",
"plugin_name": "hello",
"plugin_status": "inactive",
"plugin_update": "none",
"plugin_version": "1.7",
"siteurl": null
,
"eventType": "WordpressUser",
"siteurl": null,
"user_email": "example.user@email.com",
"user_name": "testuser1",
"user_registered": "2018-11-26 17:44:09",
"user_role": "administrator"
]
[
"eventType": "WordpressSite",
"siteurl": "http://mytest2.com"
,
"eventType": "WordpressPlugin",
"plugin_name": "akismet",
"plugin_status": "inactive",
"plugin_update": "available",
"plugin_version": "4.0.8",
"siteurl": null
,
"eventType": "WordpressPlugin",
"plugin_name": "hello",
"plugin_status": "inactive",
"plugin_update": "none",
"plugin_version": "1.7",
"siteurl": null
,
"eventType": "WordpressUser",
"siteurl": null,
"user_email": "example.user@email.com",
"user_name": "testuser2",
"user_registered": "2018-11-26 17:44:04",
"user_role": "administrator"
]
#!/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 '. | .eventType = "WordpressUser"' | jq . --arg siteurl $(wp option get siteurl) | jq '. + "user_name": .display_name, "user_role": .roles, "siteurl": ."$siteurl" | del (.display_name, .roles)')
plugins=$(wp plugin list --format=json | jq '. | .eventType = "WordpressPlugin"' | jq '. + "plugin_name": .name, "plugin_status": .status, "plugin_version": .version, "plugin_update": .update, "siteurl": ."$siteurl" | del(.name, .status, .version, .update)')
printf '"eventType":"WordpressSite","siteurl":"%s"n' "$(wp option get siteurl)"
echo "$plugins"
echo "$users"
| jq -sS .
cd ../..;
fi
done
linux bash json jq wordpress
add a comment |
up vote
0
down vote
favorite
I have a script that crawls through a directory and pulls info from WP sites and builds a JSON array of objects that will eventually be fed into a visual dashboard. The script works perfectly but I can't seem to get the siteurl key to post in every object as it does in the first.
The key-pairs that have null
need to be replaced with the corresponding siteurl
within its array.
I feel I should be able to do this with jq and the --arg name value
option but I clearly am doing something wrong. Not sure if I'm not passing the variables correctly or if it's an issue with WPCLI.
Output and script are below.
[
"eventType": "WordpressSite",
"siteurl": "http://mytest1.com"
,
"eventType": "WordpressPlugin",
"plugin_name": "akismet",
"plugin_status": "inactive",
"plugin_update": "available",
"plugin_version": "4.0.8",
"siteurl": null
,
"eventType": "WordpressPlugin",
"plugin_name": "hello",
"plugin_status": "inactive",
"plugin_update": "none",
"plugin_version": "1.7",
"siteurl": null
,
"eventType": "WordpressUser",
"siteurl": null,
"user_email": "example.user@email.com",
"user_name": "testuser1",
"user_registered": "2018-11-26 17:44:09",
"user_role": "administrator"
]
[
"eventType": "WordpressSite",
"siteurl": "http://mytest2.com"
,
"eventType": "WordpressPlugin",
"plugin_name": "akismet",
"plugin_status": "inactive",
"plugin_update": "available",
"plugin_version": "4.0.8",
"siteurl": null
,
"eventType": "WordpressPlugin",
"plugin_name": "hello",
"plugin_status": "inactive",
"plugin_update": "none",
"plugin_version": "1.7",
"siteurl": null
,
"eventType": "WordpressUser",
"siteurl": null,
"user_email": "example.user@email.com",
"user_name": "testuser2",
"user_registered": "2018-11-26 17:44:04",
"user_role": "administrator"
]
#!/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 '. | .eventType = "WordpressUser"' | jq . --arg siteurl $(wp option get siteurl) | jq '. + "user_name": .display_name, "user_role": .roles, "siteurl": ."$siteurl" | del (.display_name, .roles)')
plugins=$(wp plugin list --format=json | jq '. | .eventType = "WordpressPlugin"' | jq '. + "plugin_name": .name, "plugin_status": .status, "plugin_version": .version, "plugin_update": .update, "siteurl": ."$siteurl" | del(.name, .status, .version, .update)')
printf '"eventType":"WordpressSite","siteurl":"%s"n' "$(wp option get siteurl)"
echo "$plugins"
echo "$users"
| jq -sS .
cd ../..;
fi
done
linux bash json jq wordpress
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have a script that crawls through a directory and pulls info from WP sites and builds a JSON array of objects that will eventually be fed into a visual dashboard. The script works perfectly but I can't seem to get the siteurl key to post in every object as it does in the first.
The key-pairs that have null
need to be replaced with the corresponding siteurl
within its array.
I feel I should be able to do this with jq and the --arg name value
option but I clearly am doing something wrong. Not sure if I'm not passing the variables correctly or if it's an issue with WPCLI.
Output and script are below.
[
"eventType": "WordpressSite",
"siteurl": "http://mytest1.com"
,
"eventType": "WordpressPlugin",
"plugin_name": "akismet",
"plugin_status": "inactive",
"plugin_update": "available",
"plugin_version": "4.0.8",
"siteurl": null
,
"eventType": "WordpressPlugin",
"plugin_name": "hello",
"plugin_status": "inactive",
"plugin_update": "none",
"plugin_version": "1.7",
"siteurl": null
,
"eventType": "WordpressUser",
"siteurl": null,
"user_email": "example.user@email.com",
"user_name": "testuser1",
"user_registered": "2018-11-26 17:44:09",
"user_role": "administrator"
]
[
"eventType": "WordpressSite",
"siteurl": "http://mytest2.com"
,
"eventType": "WordpressPlugin",
"plugin_name": "akismet",
"plugin_status": "inactive",
"plugin_update": "available",
"plugin_version": "4.0.8",
"siteurl": null
,
"eventType": "WordpressPlugin",
"plugin_name": "hello",
"plugin_status": "inactive",
"plugin_update": "none",
"plugin_version": "1.7",
"siteurl": null
,
"eventType": "WordpressUser",
"siteurl": null,
"user_email": "example.user@email.com",
"user_name": "testuser2",
"user_registered": "2018-11-26 17:44:04",
"user_role": "administrator"
]
#!/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 '. | .eventType = "WordpressUser"' | jq . --arg siteurl $(wp option get siteurl) | jq '. + "user_name": .display_name, "user_role": .roles, "siteurl": ."$siteurl" | del (.display_name, .roles)')
plugins=$(wp plugin list --format=json | jq '. | .eventType = "WordpressPlugin"' | jq '. + "plugin_name": .name, "plugin_status": .status, "plugin_version": .version, "plugin_update": .update, "siteurl": ."$siteurl" | del(.name, .status, .version, .update)')
printf '"eventType":"WordpressSite","siteurl":"%s"n' "$(wp option get siteurl)"
echo "$plugins"
echo "$users"
| jq -sS .
cd ../..;
fi
done
linux bash json jq wordpress
I have a script that crawls through a directory and pulls info from WP sites and builds a JSON array of objects that will eventually be fed into a visual dashboard. The script works perfectly but I can't seem to get the siteurl key to post in every object as it does in the first.
The key-pairs that have null
need to be replaced with the corresponding siteurl
within its array.
I feel I should be able to do this with jq and the --arg name value
option but I clearly am doing something wrong. Not sure if I'm not passing the variables correctly or if it's an issue with WPCLI.
Output and script are below.
[
"eventType": "WordpressSite",
"siteurl": "http://mytest1.com"
,
"eventType": "WordpressPlugin",
"plugin_name": "akismet",
"plugin_status": "inactive",
"plugin_update": "available",
"plugin_version": "4.0.8",
"siteurl": null
,
"eventType": "WordpressPlugin",
"plugin_name": "hello",
"plugin_status": "inactive",
"plugin_update": "none",
"plugin_version": "1.7",
"siteurl": null
,
"eventType": "WordpressUser",
"siteurl": null,
"user_email": "example.user@email.com",
"user_name": "testuser1",
"user_registered": "2018-11-26 17:44:09",
"user_role": "administrator"
]
[
"eventType": "WordpressSite",
"siteurl": "http://mytest2.com"
,
"eventType": "WordpressPlugin",
"plugin_name": "akismet",
"plugin_status": "inactive",
"plugin_update": "available",
"plugin_version": "4.0.8",
"siteurl": null
,
"eventType": "WordpressPlugin",
"plugin_name": "hello",
"plugin_status": "inactive",
"plugin_update": "none",
"plugin_version": "1.7",
"siteurl": null
,
"eventType": "WordpressUser",
"siteurl": null,
"user_email": "example.user@email.com",
"user_name": "testuser2",
"user_registered": "2018-11-26 17:44:04",
"user_role": "administrator"
]
#!/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 '. | .eventType = "WordpressUser"' | jq . --arg siteurl $(wp option get siteurl) | jq '. + "user_name": .display_name, "user_role": .roles, "siteurl": ."$siteurl" | del (.display_name, .roles)')
plugins=$(wp plugin list --format=json | jq '. | .eventType = "WordpressPlugin"' | jq '. + "plugin_name": .name, "plugin_status": .status, "plugin_version": .version, "plugin_update": .update, "siteurl": ."$siteurl" | del(.name, .status, .version, .update)')
printf '"eventType":"WordpressSite","siteurl":"%s"n' "$(wp option get siteurl)"
echo "$plugins"
echo "$users"
| jq -sS .
cd ../..;
fi
done
linux bash json jq wordpress
linux bash json jq wordpress
asked Dec 6 at 14:10
jshernandez8
134
134
add a comment |
add a comment |
active
oldest
votes
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f486378%2fadd-a-key-value-pair-in-json-object-using-jq-and-bash%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f486378%2fadd-a-key-value-pair-in-json-object-using-jq-and-bash%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown