如何将我的输出转换为 .JSON 并将其另存为 .json 文件

流画

获取系统信息

#!/bin/bash

readarray -t array <<< "$(df -h)"

var=$(echo "${array[1]}"| grep -aob '%' | grep -oE '[0-9]+')

echo "${array[3]:$var-3:4}

echo -e "Manufacturer:\t"`cat /sys/class/dmi/id/chassis_vendor`

echo -e "Product Name:\t"`cat /sys/class/dmi/id/product_name`

echo -e "Version:\t"`cat /sys/class/dmi/id/bios_version`

echo -e "Serial Number:\t"`cat /sys/class/dmi/id/product_serial`

echo -e "PC Name:\t"`hostname`

echo -e "Operating System:\t"`hostnamectl | grep "Operating System" | cut 
              -d ' ' -f5-`

echo -e "Architecture:\t"`arch`

echo -e "Processor Name:\t"`awk -F':' '/^model name/ {print $2}' 
              /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//'`

echo -e "Memory:\t" `dmidecode -t 17 | grep "Size.*MB" | awk '{s+=$2} END 
                {print s / 1024 "GB"}'`

echo -e "HDD Model:\t" `cat /sys/block/sda/device/model`

echo -e "System Main IP:\t"`hostname -I`

我想像这样显示我的输出

    ({"Manufacturer":"Lenovo","Product Name":"Thinkpad":"Version":"T590","Serial Number":"1234567890" })
苏特利亚科夫

这是你真正的任务还是一个非常简单的任务?如果是真的,你可以用引号和花括号重写这个脚本,这不是很多工作。在第三行代码中提及错过的结束双引号。

#!/bin/bash
readarray -t array <<< "$(df -h)"

var=$(echo "${array[1]}"| grep -aob '%' | grep -oE '[0-9]+')

echo "${array[3]:$var-3:4}"

echo -e "({\"Manufacturer\":\""`cat /sys/class/dmi/id/chassis_vendor`"\","
echo -e "\"Product Name\":\""`cat /sys/class/dmi/id/product_name`"\","
echo -e "\"Version\":\""`cat /sys/class/dmi/id/bios_version`"\","
echo -e "\"Serial Number\":\""`cat /sys/class/dmi/id/product_serial`"\","
echo -e "\"PC Name\":\""`hostname`"\","
echo -e "\"Operating System\":\""`hostnamectl | grep "Operating System" | cut -d ' ' -f5-`"\","
echo -e "\"Architecture\":\""`arch`"\","
echo -e "\"Processor Name\":\""`awk -F':' '/^model name/ {print $2}' /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//'`"\","
echo -e "\"Memory\":\"" `dmidecode -t 17 | grep "Size.*MB" | awk '{s+=$2} END {print s / 1024 "GB"}'`"\","
echo -e "\"HDD Model\":\""`cat /sys/block/sda/device/model`"\","
echo -e "\"System Main IP\":\""`hostname -I`"\"})"

要重定向此输出,您可以使用多种方法。首先 - 您可以在调用脚本时使用重定向,例如

script.sh > result.json. 

其次(如果您想始终使用相同的文件名) - 您可以将以下行添加到脚本的开头:

exec > filename.json

第三种方法是用花括号包围你想要的输出并重定向这部分:

#!/bin/bash
readarray -t array <<< "$(df -h)"

var=$(echo "${array[1]}"| grep -aob '%' | grep -oE '[0-9]+')

echo "${array[3]:$var-3:4}"

{echo -e "({\"Manufacturer\":\""`cat /sys/class/dmi/id/chassis_vendor`"\","
echo -e "\"Product Name\":\""`cat /sys/class/dmi/id/product_name`"\","
echo -e "\"Version\":\""`cat /sys/class/dmi/id/bios_version`"\","
echo -e "\"Serial Number\":\""`cat /sys/class/dmi/id/product_serial`"\","
echo -e "\"PC Name\":\""`hostname`"\","
echo -e "\"Operating System\":\""`hostnamectl | grep "Operating System" | cut -d ' ' -f5-`"\","
echo -e "\"Architecture\":\""`arch`"\","
echo -e "\"Processor Name\":\""`awk -F':' '/^model name/ {print $2}' /proc/cpuinfo | uniq | sed -e 's/^[ \t]*//'`"\","
echo -e "\"Memory\":\"" `dmidecode -t 17 | grep "Size.*MB" | awk '{s+=$2} END {print s / 1024 "GB"}'`"\","
echo -e "\"HDD Model\":\""`cat /sys/block/sda/device/model`"\","
echo -e "\"System Main IP\":\""`hostname -I`"\"})"} > filename.json

我想建议的最后一种方法是在执行后修改脚本的输出。以下命令将完全满足您的需要(但第一行将以相同的方式处理,并将向其中添加一个空字符串,为避免它,您可以尝试第三种输出重定向方法):

echo $(sed '$ s/,/)}/' <<< $(awk -F ":" 'BEGIN {OFS=""; print "({";}  { print "\"",$1,"\":\"",$2,"\",";} ' filename.json) | tr '\n' ' ') > filename.json

awk 在这里用于给每个字段添加引号(-F 标志表示'字段分隔符'),OFS 设置为空字符串以避免多余的空格。然后 sed 删除最后一个逗号(我知道也可以使用 awk,但这种方法看起来要简单得多,IMO)。tr 用于用空格替换所有换行符。输出被重定向到同一个文件。开头的 echo 在输出的末尾添加换行符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Swift中将数组另存为json文件?

如何删除ChainMap方法另存为JSON文件?

如何将包含Unicode的json文件转换为字符串并在python中另存为json文件?

将边界框区域转换为遮罩并将其另存为PNG文件

将准备好的布局转换为位图并将其另存为文件中的图像

我如何从TradingView图表中获取数据并将其另存为CSV文件?

将JSON响应另存为JSON文件

如何在Linux中提取行并将其另存为文本文件

如何使用OpenOffice打开Excel文件并将其另存为CSV

MATLAB-如何从.fig文件中裁剪图像的某些部分并将其另存为.mat?

如何在 HIVE 中创建 DDL 并将其另存为目录中的文件

如何解析JSON数据然后将其另存为SQL Server中的变量

Scala-如何调用REST API并在HDFS中另存为json文件?

将Excel工作表另存为JSON文件

pyspark:将schemaRDD另存为json文件

如何将信息另存为Json

转换可读流以将其另存为本地文件

如何跳过行,直到在txt文件中找到“关键字”并将其余内容另存为csv?蟒蛇

如何在php中将json字节[]另存为pdf

tabulator - 如何仅提取数据并另存为 json 对象

将JSON值另存为另一个JSON文件

如何将其转换为数据框并将其另存为 csv?

如何隐藏用户密码输入并将其另存为输出以替换另一个文件中的默认密码

如何在大量gz /常规文件中查找包含某些字符串的日志并将其另存为一个/多个txt文件?

如何读取Json文件并将其转换为数据框

如何将文件另存为 zip 而不将其保存到本地文件夹

如何从给定的 URL 读取元数据并将其保存为带有键值对的 json 文件?

如何将我的 c# 数组转换为 json?

将类实例另存为JSON