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
Config File Werte finden und ändern
Config File Werte finden und ändern
If you were supposed to understand it, we wouldn't call it code.
Re: Config File Werte finden und ändern
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
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?
Re: Config File Werte finden und ändern
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
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
Re: Config File Werte finden und ändern
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
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
Re: Config File Werte finden und ändern
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
ein Shell Crack scheint's mir. Guter Hinweis, weiter so. Wo lernt man eigentlich die sed basics, mal abgesehen von rtfm ?
c'ya
oliver
Re: Config File Werte finden und ändern
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!
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!
Re: Config File Werte finden und ändern
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
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
Re: Config File Werte finden und ändern
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-->
<a href="ftp://ftp.fernuni-hagen.de/pub/pdf/urz- ... 069412.pdf" target="_blank"><!--auto-->ftp://ftp.fernuni-hagen.de/pub/pdf/urz- ... <!--auto-->
Re: Config File Werte finden und ändern
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
@ 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