Config File Werte finden und ändern

Post Reply
Message
Author
oli
Posts: 46
Joined: 25. Dec 2000 15:40

Config File Werte finden und ändern

#1 Post by oli »

Hi,

wie kann ich mit der Shell oder Artverwandten ein Config File nach einer bestimmten Variablen durchsuchen und
für diese einen neuen Wert setzen ?

Ich will die Frage mal durch ein Beispiel unterstreichen:

--------------

Nehmen wir die httpd.conf als Beispiel:

#
# Kommentare der Entwickler
#
#

DocumentRoot = /usr/local/httpd/htdocs

....

# weitere Kommentare
#

-----------------------

Wie schaffe ich es nun, dass ich den Wert für die Variable "DocumentRoot" z.B. auf den Wert "/usr/local/httpd" setze ?

Mir wär's wichtig, dass sich das mit Shell Mitteln bzw. Tools lösen lässt. Ich möchte nicht extra ein Perl Script dafür schreiben.

Für Ideen wäre ich echt dankbar <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

cu

oliver
If you were supposed to understand it, we wouldn't call it code.

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: Config File Werte finden und ändern

#2 Post by hjb »

Hi,

so ein Zufall! Gerade von 5 Minuten habe ich mir folgende Funktion zusammengezimmert:

updateconfig()
{
cp "$1" /root/old || exit 1
sed -e "s/$2/$3/g" < /root/old > "$1"
rm "/root/old"
}

Baue sie in ein Shellskript ein und rufe sie folgendermaßen auf:

updateconfig dateiname alter-string neuer-string

Ich verwende eine temporäre Datei /root/old. Aus Sicherheitsgründen verwende ich nicht /tmp als temporäres Verzeichnis.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Ozi

Re: Config File Werte finden und ändern

#3 Post by Ozi »

Hi,

mensch, super. der entscheidende Tip. Vielen Dank auch <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">

cu

oliver

Jochen

Re: Config File Werte finden und ändern

#4 Post by Jochen »

Dann sei aber vorsichtig, dass Du nie ein <i>Verzeichnis</i> mit Namen /root/old anlegst... Dann geht zwar noch das cp-Kommando, aber nicht mehr der sed. Wenigstens hast Du dann aber immer noch das alte Config-File unter /root/old/<i>name</i> stehen, weil rm ohne -r das Verzeichnis nicht wegwirft.

Noch 'n Problemchen: Sollten 2 Skripte die Funktion fast zeitgleich nutzen, kann die eine die /root/old des anderen überschreiben. Ärgs.

Ach ja, und sollten die Inhalte von $2 und $3 den armen kleinen sed verwirren, ist die Config-Datei weg, und die Sicherung wird danach gelöscht. Ahem.

Kleine Korrektur meinerseits:

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
updateconfig()
{
if [[ -a /root/old.$$ ]] ; then
echo "Workfile already exists!" >&2
exit 1
fi
cp "$1" /root/old.$$ || exit 1
sed -e "s/$2/$3/g" < /root/old.$$ > "$1" || exit 1
rm "/root/old"
}
</font><hr></pre></blockquote>

Ja ja, lässt sich noch um einiges verbessern, aber das sollte erst mal das notwendige Minimum sein.

Einverstanden?

Jochen

Ozi

Re: Config File Werte finden und ändern

#5 Post by Ozi »

Aha,

ein Shell Crack scheint's mir. Guter Hinweis, weiter so. Wo lernt man eigentlich die sed basics, mal abgesehen von rtfm ?

c'ya

oliver

Jochen

Re: Config File Werte finden und ändern

#6 Post by Jochen »

Zu sed & awk gibt' auf Anhieb 2 Bücher, eins von O'Reilly und eins von Addison-Wesley. Ist aber alleine für sed Overkill, über den gibt's nicht sooo viel zu wissen. Ein

info sed

bzw.

info gawk

bietet schon mal riesig viel Informationen. Wichtig für beide Tools (wie auch vi, perl, grep-Familie, expr, emacs, ...) ist das Verständnis für Reguläre Ausdrücke. Ansonsten: Die wichtigsten Kommandos des sed sind

s substitute (Suchen&Ersetzen)
d delete (Löschen)
q quit (Beenden)

Bei fast allem anderen wird der sed zu unbequem, und ich steige auf awk um.

Viel Spass beim Stöbern!

raffello

Re: Config File Werte finden und ändern

#7 Post by raffello »

Moin,

@Ozi

ein guter Einstieg zu sed und awk ist ein .pdf-File von der Fernuni Hagen, das von einem Vortrag im (SS 1995 ?) erstellt wurde.

CU

Ozi

Re: Config File Werte finden und ändern

#8 Post by Ozi »

@raffello

aha, und wo krieg ich das her ?

cu

oliver

Sebastian Ude

Re: Config File Werte finden und ändern

#9 Post by Sebastian Ude »

Datenmanipulation unter UNIX (sed und awk):

<a href="ftp://ftp.fernuni-hagen.de/pub/pdf/urz- ... 069412.pdf" target="_blank"><!--auto-->ftp://ftp.fernuni-hagen.de/pub/pdf/urz- ... <!--auto-->

Hägar

Re: Config File Werte finden und ändern

#10 Post by Hägar »

Moin,

@ Ozi

<!--nohttp--><a href="http://icarus.weber.edu/home/bob/index.html" target="_blank">Dr Robert Capener's Home Page </a><!--url-->

Ansonsten kann man den Artikel von Jochen nur unterstreichen!

cu

Post Reply