【问题标题】:Parse saltstack highstate output解析 saltstack 高状态输出
【发布时间】:2018-01-28 00:33:47
【问题描述】:

我选择了python的路径。
现在,我需要解析输出数据 saltstack
例如:

{"fun_args": [], "jid": "20180127110016597705", "return": {"biosversion": "0407\\nInvalid entry length (16). Fixed up to 11.", "kernel": "Linux", "domain": "corp.test.com", "uid": 0, "zmqversion": "4.1.4", "kernelrelease": "4.10.0-42-generic", "pythonpath": ["/usr/bin", "/usr/lib/python2.7", "/usr/lib/python2.7/plat-x86_64-linux-gnu", "/usr/lib/python2.7/lib-tk", "/usr/lib/python2.7/lib-old", "/usr/lib/python2.7/lib-dynload", "/usr/local/lib/python2.7/dist-packages", "/usr/lib/python2.7/dist-packages", "/usr/lib/python2.7/dist-packages/gtk-2.0"], "serialnumber": "System Serial Number\\nInvalid entry length (16). Fixed up to 11.", "pid": 29227, "ip_interfaces": {"lo": ["127.0.0.1", "::1"], "enp6s0": ["10.0.1.83", "fe80::758:bc44:76a7:9bd6"]}, "groupname": "root", "fqdn_ip6": [], "mem_total": 3861, 

现在我将这些数据作为包含一个元素的元组。
我可以将元组转换为字典,但它也有一个元素。

我想解析这些数据,像这样(字典):

{"fun_args": [], "jid": "20180127110016597705", 
"return": 
    {
    "biosversion": "0407\\nInvalid entry length (16). Fixed up to 11.", 
    "kernel": "Linux", 
    "domain": "corp.test.com", 
    "uid": 0, 
    "zmqversion": "4.1.4", 
    "kernelrelease": "4.10.0-42-generic", 
    "pythonpath": ["/usr/bin", "/usr/lib/python2.7", "/usr/lib/python2.7/plat-x86_64-linux-gnu", "/usr/lib/python2.7/lib-tk", "/usr/lib/python2.7/lib-old", "/usr/lib/python2.7/lib-dynload", "/usr/local/lib/python2.7/dist-packages", "/usr/lib/python2.7/dist-packages", "/usr/lib/python2.7/dist-packages/gtk-2.0"], 
    "serialnumber": "System Serial Number\\nInvalid entry length (16). Fixed up to 11.", 
    "pid": 29227, 
    "ip_interfaces": {
                    "lo": ["127.0.0.1", "::1"], 
                    "enp6s0": ["10.0.1.83", "fe80::758:bc44:76a7:9bd6"]
                    }, 
    "groupname": "root", 
    "fqdn_ip6": [], 
    "mem_total": 3861, 

谢谢。 我试试看:

    #!/usr/bin/env python

import mysql.connector
from mysql.connector import Error

def connect():
    """ Connect to MySQL database """
    try:
        conn = mysql.connector.connect(host='10.0.0.125',
                                       database='salt',
                                       user='salt',
                                       password='salt')
        if conn.is_connected():
            #print('Connected to MySQL database')
            cursor = conn.cursor()
            cursor.execute("SELECT full_ret FROM salt_returns WHERE fun='grains.items'")

            row = cursor.fetchone()

            s = ''.join((row[0]))
            #print(s.split())
            list = s.split()
            #print(list)
            for i in list:
                print(i)

    except Error as e:
        print(e)

    finally:
        conn.close()

【问题讨论】:

  • 请显示您的代码/努力?
  • 不在评论区,编辑成问题。
  • 使用 Ctrl+K 格式化代码。
  • 如果您的数据是字符串,并且您想从中构造一个字典,请使用 json。
  • 对不起我的语法,这是我第一次询问...

标签: python parsing salt-stack


【解决方案1】:
#!/usr/bin/env python

import mysql.connector
import json
from mysql.connector import Error


def connect():
    """ Connect to MySQL database """
    try:
        conn = mysql.connector.connect(host='10.0.0.125',
                                       database='salt',
                                       user='salt',
                                       password='salt')
        if conn.is_connected():
            cursor = conn.cursor()
            cursor.execute("SELECT full_ret FROM salt_returns WHERE fun='grains.items'")
            row = cursor.fetchone()

            s = ''.join((row))
            obj = json.loads(s)

            s2 = obj['return']
            for i in s2:
                print(i, s2[i])
                if type(s2[i]) is dict:
                    for i2 in s2[i]:
                        print(i2, s2[i][i2])
                elif type(s2[i]) is list:
                    for i3 in s2[i]:
                        print(i3)
    except Error as e:
        print(e)

    finally:
        conn.close()

if __name__ == '__main__':
    connect()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    相关资源
    最近更新 更多