WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   Config File erzeugen vor Programmstart? (http://www.wcm.at/forum/showthread.php?t=231853)

pong 20.11.2008 11:32

Config File erzeugen vor Programmstart?
 
Hallo,

wie üblich ists mit meinem Linux Kenntnissen nicht weit her, darum hier mein derzeitiges Problem:

Meine kleine Ubuntu rennt in einer VM, damit ich sie jederzeit und überall mit haben kann.

Da drinn laufen halt einige Sache u.a. ein Wonderland Server, in dessen Config File muss die IP Adresse festgelegt sein und genau zu diesem Grund möchte ich vor Start das File mit der aktuellen IP Adresse starten (welche sich ja dauernd ändert)

Wie stell ich sowas am einfachsten an?

pong

colossus 20.11.2008 11:42

Ich weisz nicht, was ein Wonderland-Server ist, und wozu der deine IP-Adresse braucht, aber wenn es um die IP-Adresse eines Interfaces in deinem Rechner geht, auf dem ein Port gebunden werden soll, dann reicht es idR, einfach "0.0.0.0" als Wildcard fuer alle verfuegbaren einzugeben.

Wenn du die IP-Adresse brauchst, die dein ISP an deinen Anschluss vergibt, unddu hinter NAT bist, wird das ganze ein bisschen (aber nicht viel) komplizierter. Meld dich halt nochmal hier, solltest du das brauchen.

pong 20.11.2008 12:46

Zitat:

was ein Wonderland-Server ist
ist auch nicht wirklich notwendig, aber falls es dich wirklich interessiert -> https://lg3d-wonderland.dev.java.net/

Zitat:

und wozu der deine IP-Adresse braucht
durch div. Einstellungen lässt sich beeinflußen woher sich der Client die Daten zur Darstellung holt, in meinem Fall wäre, dies der Server auf den er connected, nur leider ist halt die SW etwas unausgereift, darum muss sie im Config File stehen.

Im Endeffekt ist das Ganze File ein reiner Fixtext, nur an ein paar Stellen gehört halt die IP eingetragen

Jetzt wäre mein Lösungsansatz:

ein Musterconfigfile umkopieren auf den wirklich zu nutzenden Namen <- bring ich zusammen
die aktuelle IP des Ethernetsadapters zu ermitteln <- bring ich nicht zusammen
einen Fixtext/Dummytext in dem umkopierten File mit der ermittelten IP zu ersetzen -> auch hier mangelts mir an Wissen

pong

m@rio 20.11.2008 17:31

Erstell dir eine vorlage.conf in der du alle Vorkommen der IP durch %IP% ersetzt.
Dann sollte das mit dem Script funktionieren.

cp vorlage.conf deinconfigfile.conf
IP=`ifconfig eth0 | grep 'inet' | cut -d: -f2 | awk '{ print $1}'`
sed -i "s/%IP%/$IP/g" deinconfigfile.conf


deinconfigfile.conf musst du halt durch den namen+pfad von deiner Datei ersetzen

colossus 21.11.2008 13:24

Prinzipiell wuerde ich dir raten,. fuer sowas `sed` als eine Art primitiver Templating Engine zu verwenden. Du kopierst dir dein Config-File an irgendeinen Ort im Dateisystem, ersetzt dort drinnen den Text, den du im EIGENTLICHEN Configfile ersetzen willst (in deinem Fall eben die IP) durch einen moeglichst eindeutigen Token, machst es dort schreibgeschuetzt. Dann fuehrst du `sed` so aus, dass der Token in einem Substitute-Statement durch den tatsaechlichen, wie auch immer errechneten Wert ersetzt wird, und leitest das ganze via Output Redirection in das eigentliche Config-File.

Wenn du z. B. ##IPADDR## als Token verwenden willst, etwa so:
Code:

#/bin/bash
TMP_IP="$(/sbin/ip addr show eth0 | awk '(NR==3){split($2,a,"/"); print a[1]}')"
sed "s/##IPADDR##/${TMP_IP}/g" /path/to/template.conf > /path/to/real.conf
/start/wonderland/here



Alle Zeitangaben in WEZ +2. Es ist jetzt 09:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag