Список хостов ConfigParser в разных разделах файла инвентаризации?

У меня есть файл инвентаризации формата.

[web]
web1
web2
web3

[loadbalancer]
lb1
lb2
lb3

[admin]
adm1
adm2
adm3

Я хочу иметь возможность читать hosts из разных разделов файла. Так, например, чтобы перечислить все разделы, которые я пробовал.

import ConfigParser
parser = ConfigParser.ConfigParser()
parser.read('hosts.cfg')
parser.sections()

Но это напечатало все серверы со следующими ошибками.

Traceback (most recent call last):
  File "./server_audit.py", line 55, in <module>
    parser.read('hosts.cfg')
  File "/usr/lib64/python2.6/ConfigParser.py", line 286, in read
    self._read(fp, filename)
  File "/usr/lib64/python2.6/ConfigParser.py", line 510, in _read
    raise e
ConfigParser.ParsingError: File contains parsing errors: hosts.cfg
    [line  2]: 'web1\n'
    [line  3]: 'web2\n'
    [line  4]: 'web3\n'
    [line  7]: 'lb1\n'
    [line  8]: 'lb2\n'
    [line  9]: 'lb3\n'
    [line 12]: 'adm1\n'
    [line 13]: 'adm2\n'
    [line 14]: 'adm3\n'

person rahimbah    schedule 21.04.2016    source источник


Ответы (1)


Файл конфигурации должен иметь вид:

[web]
web1 = value1
web2 = value2
web3 = value3

И т.п.

Итак, левая сторона — это «ключ», который используется для поиска. Правая сторона — это значение для этого ключа. Пример:

[web]
web1 = http://www.example.org
person Monica Granbois    schedule 21.04.2016
comment
Вы говорите, что я вынужден иметь пару ключ-значение? Я пытался использовать параметр allow_no_value, но думаю, что он не примет это, потому что я использую python 2.6. - person rahimbah; 21.04.2016
comment
Да, это должна быть пара ключ-значение. Вы можете сделать несколько значений для каждого ключа, хотя ключ = значение1, значение2, значение3. allow_no_value должен принимать ключи без значений - person Monica Granbois; 21.04.2016
comment
К вашему сведению: здесь похоже на аналогичный вопрос: stackoverflow.com/questions/17342045/ - person Monica Granbois; 21.04.2016
comment
Спасибо за вашу помощь. Похоже, мне придется придерживаться этого метода на данный момент. - person rahimbah; 21.04.2016