aus 2 config Dateien eine bauen

Antworten
Nachricht
Autor
jochen123
Beiträge: 23
Registriert: 21. Aug 2006 11:45

aus 2 config Dateien eine bauen

#1 Beitrag von jochen123 » 05. Feb 2009 13:08

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: Alles auswählen

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

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 05. Feb 2009 15:42

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: Alles auswählen

#!/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: Alles auswählen

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

jochen123
Beiträge: 23
Registriert: 21. Aug 2006 11:45

#3 Beitrag von jochen123 » 06. Feb 2009 11:15

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.

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 06. Feb 2009 11:25

jochen123 hat geschrieben: 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
Beiträge: 23
Registriert: 21. Aug 2006 11:45

#5 Beitrag von jochen123 » 06. Feb 2009 12:10

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ß

Benutzeravatar
Janka
Beiträge: 3581
Registriert: 11. Feb 2006 19:10

#6 Beitrag von Janka » 06. Feb 2009 23:52

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

Code: Alles auswählen

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

Code: Alles auswählen

#/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
Beiträge: 23
Registriert: 21. Aug 2006 11:45

#7 Beitrag von jochen123 » 20. Feb 2009 11:56

dank dir !

Antworten