Hi! Baue gerade an einem kleinen Script, was folgendes können sollte: In der Sendmail.cf die Einträge für virtuelle Domains hinzufügen oder löschen. Der Eintrag sollte an der selben Stelle sein, also nicht am Ende der Datei oder irgendwo...normalerweise ist sed ja das richtige Tool, kennt sich jemand damit aus? Ebenso sollte der "Serial" Wert bei dem Nameserver dadurch geändert werden, der muss einfach wieder an der selben Stelle im Text stehen. Beispiel: Ich habe einen Text mit folgendem Inhalt: Das ist ein Test Der Baum ist gross Hier steht der Serial Wert 1999010801 Denke das ist mit sed relativ einfach hinzubekommen... Was aber ist hiermit: Sendmail.cf # diverser Text und Parameter # diverser Text und Parameter # diverser Text und Parameter diverser Text und Parameter # cwmail.xyz1.com cwmail.xyz2.com cwmail.xy3.com # # diverser Text und Parameter diverser Text und Parameter diverser Text und Parameter diverser Text und Parameter # Ende der Datei Nun möchte ich zb. cwmail.abc.com hinzufügen, unterhalb des letzten cw Eintrags. Hat einer eine Idee ? Danke! MfG Andre -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Am Fre, 08 Jan 1999 schrieb Andre Vaupel:
Hi!
Baue gerade an einem kleinen Script, was folgendes können sollte:
In der Sendmail.cf die Einträge für virtuelle Domains hinzufügen oder löschen. Der Eintrag sollte an der selben Stelle sein, also nicht am Ende der Datei oder irgendwo...normalerweise ist sed ja das richtige Tool, kennt sich jemand damit aus?
Nun möchte ich zb. cwmail.abc.com hinzufügen, unterhalb des letzten cw Eintrags. Hat einer eine Idee ?
Mit sed liegst Du schon richtig. Auch awk (bzw. gawk würde ich mir mal ansehen. info gawk) Mit perl geht das sicherlich auch. Schau Dir das alles mal an. Es git auch Büscher zu sed und awk. Bitte habe Verständnis dafür, daß ich hier kein Tutorial liefern kann. Erarbeiten muß Du Dir das schon selber. Vielleicht schreibe ich ja mal ein Tutorial, aber zur Zeit habe ich keins, und in drei Zeilen kann man das nicht machen. cu Bernd -- Bernd Brodeßer Mönchengladbach B.Brodesser@online-club.de -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
On Fri Jan 08 1999, Andre Vaupel wrote:
In der Sendmail.cf die Einträge für virtuelle Domains hinzufügen oder löschen. Der Eintrag sollte an der selben Stelle sein, also nicht am Ende der Datei oder irgendwo...normalerweise ist sed ja das richtige Tool, kennt sich jemand damit aus?
Ebenso sollte der "Serial" Wert bei dem Nameserver dadurch geändert werden, der muss einfach wieder an der selben Stelle im Text stehen.
Das ist ein Test Der Baum ist gross Hier steht der Serial Wert 1999010801
Untenstehendes bitte als eine Zeile sehen: perl -pe '$new=123456; s/^(Hier steht der Serial Wert\s*)\d+(\s*.*)/$1$new$2/;' -i.bak <datei>
Sendmail.cf # diverser Text und Parameter # diverser Text und Parameter # diverser Text und Parameter diverser Text und Parameter # cwmail.xyz1.com cwmail.xyz2.com cwmail.xy3.com # # diverser Text und Parameter diverser Text und Parameter diverser Text und Parameter diverser Text und Parameter # Ende der Datei
Nun möchte ich zb. cwmail.abc.com hinzufügen, unterhalb des letzten cw Eintrags. Hat einer eine Idee ?
Datei solange lesen, bis die Sektion mit den "cwmail" Eintraegen kommt, weiterlesen bis der naechste Eintrag nicht damit beginnt, und davo die noetigen Zeilen einfuegen, hier ein Beispiel aus dem Kopf, hardcoded (igitt!): ---------------------------------------------> open(IN, "< $sendmail.conf") || die; while (<IN>) { push(@newcf, $_); if (/^cwmail/) { while (<IN>) { if (! /^cwmail) { push(@newcf, "cwmail.xyz4.com\n"); } push(@newcf, $_); } } } close IN; open(OUT, "> $sendmail.conf") || die; print @newcf; close OUT; <----------------------------------------------- Passe es entsprechend an. -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Heinz Diehl wrote:
Untenstehendes bitte als eine Zeile sehen:
perl -pe '$new=123456; s/^(Hier steht der Serial Wert\s*)\d+(\s*.*)/$1$new$2/;' -i.bak <datei>
Verflixt, ich glaube, jetzt muss ich doch noch perl lernen :-)) o long... bernd -- Please try to boot your system outside the system, it maybe the grounding problem. -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
On Fri, 8 Jan 1999, Andre Vaupel wrote: [ ... somewhat cut short ... ]
Sendmail.cf # diverser Text und Parameter diverser Text und Parameter # cwmail.xyz1.com cwmail.xyz2.com cwmail.xy3.com # diverser Text und Parameter # Ende der Datei
Nun möchte ich zb. cwmail.abc.com hinzufügen, unterhalb des letzten cw Eintrags.
Ich gehe mal mit dem Holzhammer ran: Wenn Du um die zu manipulierende Liste ERKENNBARE Kommentare setzt, tun die dem Parser nicht weh und erlauben Dir, den Block zu identifizieren. ----------------------------------------------------------------- diverser Text und Parameter # START_OF_LIST cwmail.xyz1.com cwmail.xyz2.com cwmail.xy3.com # END_OF_LIST diverser Text und Parameter ----------------------------------------------------------------- zerfaellt dann in drei Teile, die mit SEP_START="# START_OF_LIST" SEP_STOP="# END_OF_LIST" cat $FILE | sed '/'"$SEP_START"'/,$d' cat $FILE | sed '1,/'"$SEP_START"'/d; /'"$SEP_STOP"'/,$d' cat $FILE | sed '1,/'"$SEP_STOP"'/d' zu erhalten sind. Jeder Teil kann veraendert oder neu erzeugt werden und alle zusammen geben mit cat wieder das Ergebnis. Das alles ist freilich noch zu ueberpruefen wegen dem alten Problem mit +/- einer Zeile. Was im vi geht (1,/MUSTER/-1d), wird vom sed mit "sed: Unknown command" quittiert. Aber weil nur die Trennzeilen untergehen und Du deren Inhalt kennst (und sogar schon in Variablen greifbar hast), ist das sicher nicht schlimm. Platz fuer beautification ist allemal :) Gerhard Sittig -- If you don't understand or are scared by any of the above ask your parents or an adult to help you. -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
At 09:24 08.01.99 +0100, you wrote:
Hi!
Baue gerade an einem kleinen Script, was folgendes können sollte:
In der Sendmail.cf die Einträge für virtuelle Domains hinzufügen oder löschen. Der Eintrag sollte an der selben Stelle sein, also nicht am Ende der Datei
oder
irgendwo...normalerweise ist sed ja das richtige Tool, kennt sich jemand damit aus?
Hallo, wenn es nur um die sendmail cw's geht, kannst Du diese Doamins ja in eine extra Datei schreiben ! zB. in sendmail.cw und in jeder zeile ein Domainname, es gibt in sendmail.cf ja diesen schönen eintrag: Cwlocalhost # file containing names of hosts for which we receive email Fw/etc/mail/sendmail.cw und an diese Datei kann immer drangehängt werden. Etwas sicherer als mit sendmail.cf zu spielen schaut mir das auch aus ;-) und servus Hans K. -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
participants (6)
-
avaupel@kapa.de
-
B.Brodesser@online-club.de
-
G.Sittig@abo.FreiePresse.DE
-
hans.klein@net-con.net
-
hd@elfie.rhein-neckar.de
-
Illuminatus@t-online.de