Python解析tac_plus配置文件

Python解析tac_plus配置文件,python,parsing,configuration,Python,Parsing,Configuration,我正在试图找到解析tac_plus配置文件的最佳方法。最好能够将其转换为JSON格式,以便将其存储在NoSQL数据库中 以下是配置示例: id = spawnd { listen = { port = 49 } spawn = { instances min = 1 instances max = 10 } background = yes } id = tac_plus { access log

我正在试图找到解析tac_plus配置文件的最佳方法。最好能够将其转换为JSON格式,以便将其存储在NoSQL数据库中

以下是配置示例:

id = spawnd {
    listen = {
        port = 49
    }
    spawn = {
        instances min = 1
        instances max = 10
    }
    background = yes
}

id = tac_plus {
    access log = /var/log/tacacs/%Y/%m/%d/access.log
    accounting log = /var/log/tacacs/%Y/%m/%d/acct.log

    mavis module = external {    
        setenv LDAP_SERVER_TYPE = "microsoft"
        setenv LDAP_HOSTS = "ads01:3268 ads02:3268"
        setenv LDAP_SCOPE = sub
        setenv LDAP_BASE = "dc=example,dc=com"
        setenv LDAP_FILTER = "(&(objectclass=user)(sAMAccountName=%s))";
        setenv LDAP_USER = tacacs@example.com
        setenv LDAP_PASSWD = Secret123
        setenv AD_GROUP_PREFIX = tacacs
        setenv USE_TLS = 0
        exec = /usr/local/lib/mavis/mavis_tacplus_ldap.pl
    }

    login backend = mavis
    pap backend = mavis

    host = world {
        address = ::/0
        welcome banner = "Welcome\n"
        key = cisco
    }

    host = helpdesklab {
        address = 192.168.34.16/28
    }
    group = admin {
        default service = permit
        service = shell {
            default command = permit
            default attribute = permit
            set priv-lvl = 15
        }
    }  
    group = helpdesk {
        default service = permit
        service = shell {
            default command = permit
            default attribute = permit
            set priv-lvl = 1
        }
        enable = deny "enter code here"
        member = admin@helpdesklab
    }
}

您可以将它作为JSON存储在一个文件中,然后从那里加载它

创建一个名为conf.json的文件:

{ 
  spawnd : { ... },
  tac_plus: { ... }
}
然后使用python加载它:

import json

with open('conf.json') as rdr:
    config = json.loads(rdr.read())

config['tac_plus']

虽然这是一个很好的建议,但我认为配置文件的格式不在他的控制之下。。。但我可能完全错了…配置不在我的控制之下。我的目标是将所有这些信息存储在MongoDB中,并能够将配置文件转换为JSON,因为目前使用的是一种我无法识别的不同格式。转换应该是双向的。从当前配置到JSON,反之亦然。因此,配置听起来确实在您的控制之下。只需将配置格式化为python字典,然后就可以将其加载/转储到JSON或从JSON中加载/转储。您希望输出的外观如何?比如说mavis模块?