Thread Konfigurationsdatei (6 answers)
Opened by bloonix at 2006-01-08 20:49

bloonix
 2006-01-08 20:49
#61561 #61561
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo,

irgendwie steh ich auf 'nem Schlauch und vielleicht kann man mir weiter-
helfen.

Ich habe für jedes Objekt eine eigene Konfigurationsdatei. Nun komme ich
einfach nicht weiter, was das Auslesen der Datei betrifft und auch die Art,
wie die Parameter darin abgelegt sind.

Derzeit ist es so, dass die Konfig-Dateien mittels Data::Dumper erzeugt
werden und mit reval (CPAN Safe) eingelesen werden. Was mich an dieser
Art stört ist das der Taint-Modus wohl überhaupt nicht damit zurecht
kommt. Hinzu kommt, dass dieser Konfigstil wohl nicht üblich ist - glaube
ich zumindest.

Das Problem bei der Sache ist, dass nicht alle Daten einfach mit
Name = Wert abgelegt werden. Sondern sich schon tiefere Strukturen
bilden.

Hier ein Ausschnitt einer Konfigurationsdatei, erzeugt mit Data::Dumper.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
$host = {
         'Description' => 'Irgendeine Beschreibung',
         'MailCounter' => 3,
         'History' => 14,
         'Hostname' => 'suselinux',
         'Interval' => 10,
         'DataVolume' => 200,
         'Address' => '192.168.0.3',
         'CommKey' => '8f23hq8ofhoiajsv80hj0wg23049hg0',
         'MailTimer' => 1800,
         'Service' => 43610,
         'Monitor' => 'on',
         'Threshold' => {
                          'DiskStatsSum' => {
                                              'Bytes' => {
                                                                  'Limit' => 1,
                                                                  'MailGroup' => 'dba'
                                                                }
                                            },
                          'DiskUsage' => {
                                           '/dev/hda3' => {
                                                            'UsagePro' => {
                                                                                  'Limit' => 1,
                                                                                  'MailGroup' => 'dba'
                                                                                }
                                                          },
                                           '/dev/hda4' => {
                                                            'Usage' => {
                                                                               'Limit' => 1,
                                                                               'MailGroup' => 'dba'
                                                                             }
                                                          }
                                         },
                          'ProcStats' => {
                                           'Total' => {
                                                            'Limit' => 1,
                                                            'MailGroup' => 'dba'
                                                          },
                                           'New' => {
                                                          'Limit' => 200,
                                                          'MailGroup' => 'none'
                                                        }
                                         },
                          'NetStats' => {
                                          'TxBytes' => {
                                                            'Limit' => 200,
                                                            'MailGroup' => 'dba'
                                                          }
                                        }
                        },
       };


Wenn ich jetzt eine "normale" Konfigurationsdatei nutzen möchte, wie
könnte ich die Datei am besten unterteilen/aufbauen? Mein erster Gedanke
war folgendes ...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
History;14
MailCounter;3
Interval;10
Hostname;suselinux
DataVolume;200
Address;192.168.0.3
MailTimer;1800
CommKey;8f23hq8ofhoiajsv80hj0wg23049hg0
Service;43610
Monitor;on
Description;Irgendeine Beschreibung
DiskUsage;/dev/hda4;Usage;1;dba
DiskUsage;/dev/hda3;UsagePro;1;dba
Threshold;DiskStatsSum;Bytes;1;dba
Threshold;ProcStats;New;200;none
Threshold;ProcStats;Total;1;dba
Threshold;NetStats;TxBytes;200;dba


Mein zweiter sowas hier ...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[Global]
History = 14
MailCounter = 3
Interval = 10
Hostname = suselinux
DataVolume = 200
Address = 192.168.0.3
MailTimer = 1800
CommKey = 8f23hq8ofhoiajsv80hj0wg23049hg0
Service = 43610
Monitor = on
Description = Irgendeine Beschreibung

[DiskUsage]
/dev/hda4 = Usage;1;dba
/dev/hda3 = UsagePro;1;dba

[Thresholds]
DiskStatsSum = Bytes;1;dba
ProcStats = New;200;none
ProcStats = Total;1;dba
NetStats = TxBytes;200;dba


Gibt es nicht irgendwelche üblichen Methoden, auf die ich zurückgreifen
könnte? Config::IniFiles könnte mir die Parameter auslesen, aber auch
richtige Hashstrukturen bilden?

Greez,
opi\n\n

<!--EDIT|opi|1136746228-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Konfigurationsdatei