memory - How to save in XML/JSON format all information from “free” command and “vmstat” command including time?
Answer
Assuming you don't want individual tags for total, used, free shared etc, you can wrap the whole output in enclosing tags, as appropriate:
XML
The following script could be saved as (eg) memoryinfo-xml.sh:
#!/bin/bash
# memoryinfo-xml.sh - wrap output of free + vmstat in XML tags
echo ""
example output:
As you can see, it isn't exactly pretty!
JSON
Very similar to before, save as (eg) memoryinfo-json.sh:
#!/bin/bash
# memoryinfo-json.sh - wrap output of free + vmstat in json
# thanks to https://stackoverflow.com/a/1252191 for \n replacement
echo "{ \"output\":"
echo -e "\t { \"date\": \"$(date)\", "
echo -e "\t \"free\": \"$(free | sed ':a;N;$!ba;s/\n/||/g')\", "
echo -e "\t \"vmstat\": \"$(vmstat| sed ':a;N;$!ba;s/\n/||/g')\" "
echo "}"
example output:
{
"output": {
"date": "Thu 30 Mar 16: 48: 51 BST 2017",
"free": "total used free shared buffers cached || Mem: 3853532 3722428 131104 100868 227888 3024844 || -/+ buffers/cache: 469696 3383836 || Swap: 1182716 2512 1180204",
"vmstat": "procs-- -- -- -- -- - memory-- -- -- -- -- -- - swap-- -- -- - io-- -- - system-- -- -- --cpu-- -- - || r b swpd free buff cache si so bi bo in cs us sy id wa st || 1 0 2512 131096 227888 3024844 0 0 3 2 4 4 1 0 99 0 0"
}
}
Note that to get valid JSON, the newlines have been replaced by a double pipe character (||), via sed replacement.

Comments
Post a Comment