将bash命令的响应转换为序列化的json字符串

时间:2015-10-02 00:03:01

标签: json bash serialization

我需要在浏览器中打开bash命令的响应作为查询参数。

我的想法是从我的员工计算机上运行一个bash命令,让它在我的新库存应用程序中打开一个网址,为我完成剩下的工作。

现在我让它只用于串口。即:

inventoryme(){
  OUTPUT="$(system_profiler SPHardwareDataType | grep Serial)"
  open "http://localhost:3000/?serial=${OUTPUT}"
}

打开:http://localhost.dev:3000/?serial=%20%20%20%20%20%20Serial%20Number%20(system):CENSORED

我可以在我的网络应用程序端清楚地解析这个问题,或者在bash中做得更好,但我很乐意将prsystem_profiler SPHardwareDataType的整个响应变成json字符串!

任何人都有一个很好的方法或建议吗?该命令返回如下内容:

 Model Name: MacBook Air
      Model Identifier: MacBookAir7,2
      Processor Name: Intel Core i7
      Processor Speed: 2.2 GHz
      Number of Processors: 1
      Total Number of Cores: 2
      L2 Cache (per Core): 256 KB
      L3 Cache: 4 MB
      Memory: 8 GB
      Boot ROM Version: MBA71.0166.B06
      SMC Version (system): 2.27f2
      Serial Number (system): CONSORED
      Hardware UUID: CONSORED

1 个答案:

答案 0 :(得分:0)

使用Perl的几种方法:

# JSON::PP should be available. JSON::XS is faster, but is not a core module
perl -MJSON::PP -ne '/(\S.*):\s*(.*)/ and $data{$1} = $2; END { print encode_json(\%data) }'

# If you don't have a JSON module installed
perl -ne '/(\S.*):\s*(.*)/ and $json .= "\"$1\": \"$2\","; END { chop $json; print "{ $json }" }'