aus 2 config Dateien eine bauen

Post Reply
Message
Author
jochen123
Posts: 23
Joined: 21. Aug 2006 11:45

aus 2 config Dateien eine bauen

#1 Post by jochen123 »

Hallo,

hänge gerade an einem kleinen Problem.
Ich möchte die httpd.conf vom apache durch ein Script mit den richtigen Werten füllen und erstellen.

httpd.sample # std httpd.conf

httpd.sets # Variablen für Apache
ServerName = test.de
IP = 192.168.x.x
Port = 80

httpd.conf # conf Datei die generiert werden soll.

Folgenden Versuch wurde schon gemacht: ( Vorher wurden die Variablen gesetzt(export IP=192...) httpd.sets nicht verwendet )

Code: Select all

for i in `cat httpd.test`; do eval "echo $i"; done
Problem ist das er dann einen Zeilenumbruch einbaut:
ServerName
test.de


Hat vielleicht einer eine Idee wie man dies Umsetzen könnte?
Super wäre es wenn man dem apache beim Starten ein Script übergibt ( -f file ),
welches dann aus den beiden Dateien die httpd.conf baut. Bin mir aber noch nicht sicher ob dies funktioniert.

Bin für jeden Tipp Dankbar

Gruß Jochen

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Wenn ich dich richtig verstehe, möchtest du bestimmte Variablen in der Apache-Konfigurationsdatei durch Umgebungsvariablen ersetzen.

Ich würde sowas mit Tcl machen.

Code: Select all

#!/usr/bin/tclsh
foreach {VAR VALUE} [array get env] {set $VAR $VALUE}
puts [subst -nobackslashes -nocommands [read stdin]]
Das Skript fügt alle exportierten Umgebungsvariablen in das Template ein. Aufrufen mit

Code: Select all

./filloutwithenv <template >output
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

jochen123
Posts: 23
Joined: 21. Aug 2006 11:45

#3 Post by jochen123 »

hey Janka,

dank dir. Ist genau das was ich gesucht habe.
Hast mir vor über nem Jahr schon mal mit tcl/expect geholfen :)

Hab leider seit dem nichts mehr mit expect gemacht. Werde ich mal
nachholen.

Weist du oder wer anders zufällig wie man Apache dieses beim Starten übergeben könnte?
Also in etwa so: ./apachectl -f filloutwithenv
Das er dann erst durch das Script die httpd.conf erstellt und gleich an apache übergibt.

Vielleicht hat da ja noch einer ne Idee.

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#4 Post by Janka »

jochen123 wrote: Weist du oder wer anders zufällig wie man Apache dieses beim Starten übergeben könnte?
Also in etwa so: ./apachectl -f filloutwithenv
Das er dann erst durch das Script die httpd.conf erstellt und gleich an apache übergibt.
Wenn dein Apache, wie das üblich ist, von einem Initskript gestartet wird, kannst du bei apachectl nur Kommandos übergeben, keine Optionen. Schreib dann die Template-Bastelei vor den httpd-Aufruf in das Init-Skript hinein. Dann musst du bei einer Variablenänderung aber jeweils das Initskript starten, apachectl ist dann wirkungslos.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

jochen123
Posts: 23
Joined: 21. Aug 2006 11:45

#5 Post by jochen123 »

Hm wenn das mit dem Script übergeben nicht geht werde ich es wohl so machen müssen.

Dann bleibt nur noch eine Frage :)

Die Variablen würde ich dann in eine "httpd_variables" Datei schreiben und aus dieser + httpd.temp die httpd-conf bauen.

Bin in TCL wie gesagt noch nicht so gut... Wäre nett wenn du mir noch nen Tipp geben könntest wie ich bei deinem Script eine datei angeben kann wo die Variable drin stehen.
Hatte ja vorher nur auf der console nen export gemacht.

Danke & Gruß

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#6 Post by Janka »

Schreib eine Datei, in der die Variablen so definiert werden:

Code: Select all

set NAME1 WERT1
set NAME2 WERT2
...
Dann änderst du das Skript oben wie folgt

Code: Select all

#/usr/bin/tclsh
source /pfad/zur/Variablendatei
puts &#91;subst -nobackslashes -nocommands &#91;read stdin&#93;&#93;
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

jochen123
Posts: 23
Joined: 21. Aug 2006 11:45

#7 Post by jochen123 »

dank dir !

Post Reply