2016-04-21 8 views
1

Ich habe eine Inventardatei des Formats.ConfigParser Listet Hosts in verschiedenen Abschnitten einer Inventardatei auf?

Ich möchte Hosts aus verschiedenen Abschnitten der Datei lesen können. Zum Beispiel um alle Abschnitte aufzulisten, die ich ausprobiert habe.

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

Aber das druckte alle Server mit den folgenden Fehlern.

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' 

Antwort

1

Die Konfigurationsdatei muss die Form haben:

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

Etc.

Also, auf der linken Seite ist der 'Schlüssel', die für Look verwendet wird. Die rechte Seite ist der Wert für diese Taste. Beispiel:

[web] 
web1 = http://www.example.org 
+0

Sie sagen, ich bin gezwungen, ein Schlüssel-Wert-Paar zu haben? Ich habe versucht, mit der Option allow_no_value, aber ich denke, es wird dies nicht akzeptieren, weil ich Python 2.6 verwende. – rahimbah

+0

Ja, es muss ein Schlüssel-Wert-Paar sein. Sie können mehrere Werte pro Taste ausführen, obwohl key = value1, value2, value3. Der allow_no_value soll Schlüssel ohne Werte akzeptieren. –

+0

FYI: Sieht hier aus wie eine ähnliche Frage: http://stackoverflow.com/questions/17342045/configparser-and-section-with-values-without-keys –

Verwandte Themen