从Bash脚本输出JSON
所以我有一个bash
脚本,可以在服务器上输出详细信息。问题是我需要输出是JSON
。最好的方法是什么?这是bash脚本:
# Get hostnamehostname=`hostname -A` 2> /dev/null
# Get distro
distro=`python -c 'import platform ; print platform.linux_distribution()[0] + " " + platform.linux_distribution()[1]'` 2> /dev/null
# Get uptime
if [ -f "/proc/uptime" ]; then
uptime=`cat /proc/uptime`
uptime=${uptime%%.*}
seconds=$(( uptime%60 ))
minutes=$(( uptime/60%60 ))
hours=$(( uptime/60/60%24 ))
days=$(( uptime/60/60/24 ))
uptime="$days days, $hours hours, $minutes minutes, $seconds seconds"
else
uptime=""
fi
echo $hostname
echo $distro
echo $uptime
所以我想要的输出是这样的:
{"hostname":"server.domain.com", "distro":"CentOS 6.3", "uptime":"5 days, 22 hours, 1 minutes, 41 seconds"}
谢谢。
回答:
如果只需要输出小的JSON,请使用printf
:
printf '{"hostname":"%s","distro":"%s","uptime":"%s"}\n' "$hostname" "$distro" "$uptime"
或者,如果您需要产生更大的JSON,请使用[leandro-mora]解释的heredoc。如果您使用here-
doc解决方案,请确保对他的回答进行投票:
cat <<EOF > /your/path/myjson.json{"id" : "$my_id"}
EOF
一些较新的发行版具有一个名为:/etc/lsb-release
或类似名称(cat /etc/*release
)的文件。因此,你可以 有可能
废除Python的依赖你:
distro=$(awk -F= 'END { print $2 }' /etc/lsb-release)
顺便说一句,您可能应该避免使用反引号。他们有点老式。
以上是 从Bash脚本输出JSON 的全部内容, 来源链接: utcz.com/qa/403137.html