Linux运维之json文件操作

    作者:匿名更新于: 2022-11-30 11:54:53

      python脚本中读取配置文件通常将配置文件放在json格式的文件中,然后做后续的处理,那么在linux服务器上编辑和读取json文件有什么技巧呢?来看一下吧,

      Json数据格式化

      json是一种轻量级的数据交换格式,应用范围非常广泛。在Linux系统下使用jq工具可以非常方便的处理json

      复制

      1.  [root@knode1 ~]# cat k8s.conf

      2.  {"hosts": {"host_list": [ {"hostname": "host1", "ip": "10.1.251.1", "username": "aps", "password": "tingsoft", "ssh_port": 22}, {"hostname": "host24", "ip": "10.1.251.2", "username": "aps", ssword": "tingsoft", "ssh_port": 22} ], "sshkey_enable": false, "data_dir": "/opt", "src":"/etc/localtime", "dest": "/etc/timezone", "port": "8080" } }1

      在linux上安装jq工具

      复制

      1.  [root@knode1 ~]# yum -y install jq

      将上面k8s.conf文件用json格式展示,提高可读性

    •   方法一:cat filename.conf | jq

      复制

      1.  [root@knode1 ~]# cat k8s.conf | jq

      2.  {

      3.  "hosts": {

      4.  "host_list": [

      5.  {

      6.  "hostname": "host1",

      7.  "ip": "10.1.251.1",

      8.  "username": "aps",

      9.  "password": "tingsoft",

      10.  "ssh_port": 22

      11.  },

      12.  {

      13.  "hostname": "host24",

      14.  "ip": "10.1.251.2",

      15.  "username": "aps",

      16.  "password": "tingsoft",

      17.  "ssh_port": 22

      18.  }

      19.  ],

      20.  "sshkey_enable": false,

      21.  "data_dir": "/opt",

      22.  "src": "/etc/localtime",

      23.  "dest": "/etc/timezone",

      24.  "port": "8080"

      25.  }

      26.  }

      jq工具会把json文件更有好的读取出来,此外,jq工具还在背后检查json文件的合法性,如果文件存在格式上的错误,jq也会报出错误存在的位置

    •   方法二:cat filename.conf | python -m json.tool

      python -m json.tool这种方法需要服务器上安装python,效果和jq一样,也会校验数据合法性,出现格式报错会报出位置

      复制

      1.  [root@knode1 ~]# cat k8s.conf | python -m json.tool

      2.  Expecting object: line 1 column 343 (char 342)

      Json数据读取

    •   通过Key获取Value的值

      复制

      1.  [root@knode1 ~]# cat k8s.conf | jq .hosts

      2.  {

      3.  "host_list": [

      4.  {

      5.  "hostname": "host1",

      6.  "ip": "10.1.251.1",

      7.  "username": "aps",

      8.  "password": "tingsoft",

      9.  "ssh_port": 22

      10.  },

      11.  {

      12.  "hostname": "host24",

      13.  "ip": "10.1.251.2",

      14.  "username": "aps",

      15.  "password": "tingsoft",

      16.  "ssh_port": 22

      17.  }

      18.  ],

      19.  "sshkey_enable": false,

      20.  "data_dir": "/opt",

      21.  "src": "/etc/localtime",

      22.  "dest": "/etc/timezone",

      23.  "port": "8080"

      24.  }

      25.  [root@knode1 ~]# cat k8s.conf | jq .hosts.host_list

      26.  [

      27.  {

      28.  "hostname": "host1",

      29.  "ip": "10.1.251.1",

      30.  "username": "aps",

      31.  "password": "tingsoft",

      32.  "ssh_port": 22

      33.  },

      34.  {

      35.  "hostname": "host24",

      36.  "ip": "10.1.251.2",

      37.  "username": "aps",

      38.  "password": "kingsoft",

      39.  "ssh_port": 22

      40.  }

      41.  ]

      解析不存在的元素key时,会返回null,.hosts.host_list这种属于嵌套解

    •   自定义输出数组

      对于上面jq .hosts.host_list获取的结果,还可以通过【】数组形式获取

      复制

      1.  [root@knode1 ~]# cat k8s.conf | jq .hosts.host_list[0]

      2.  {

      3.  "hostname": "host1",

      4.  "ip": "10.1.251.1",

      5.  "username": "ups",

      6.  "password": "tingsoft",

      7.  "ssh_port": 22

      8.  }

      掌握了上面这些基本的数据处理方法,我们就可以在linux和python脚本中做一些配置的基础处理了。

      来源: 运维之美

      >>>>>>点击进入系统运维专题

    标签: Linux运维json
系统运维 更多推荐

课课家教育

未登录