Hallo, ich muss die Hosteintraege in sudoers per Script updaten. Zur Zeit mache ich das ganz simple mit sed (was imho kraeftig in die Hose gehen kann) sed -i "s/$oldhostname/$newhostname/g" /etc/sudoers Um Aenderungen an der _ganzen_ Datei vorzubeugen, moechte ich erst ab (nach) der Zeile: ###-### lesen und aendern! Wie geht es am einfachsten ohne while read line usw.? MfG Th. MOritz -- Solange der Nagellack nicht trocken ist, ist eine Frau wehrlos… (Burt Reynolds) -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Am Sonntag, 7. März 2010 11:30:29 schrieb Thomas Moritz: Hallo,
ich muss die Hosteintraege in sudoers per Script updaten. Zur Zeit mache ich das ganz simple mit sed (was imho kraeftig in die Hose gehen kann)
sed -i "s/$oldhostname/$newhostname/g" /etc/sudoers
Um Aenderungen an der _ganzen_ Datei vorzubeugen, moechte ich erst ab (nach) der Zeile:
###-###
lesen und aendern! Wie geht es am einfachsten ohne while read line usw.?
cp -f /etc/sudoers /etc/sudoers_old cat /etc/sudoers_old | sed -e '/###-###/,/*/ s/$oldhostname/$newhostname/g' > /etc/sudoers ...waere das eine vernuenftige Loesung? Vermutlich geht es wieder einfacher, aber mir faellt nichts Besseres ein. MfG Th. Moritz -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Moin, Am Sonntag, 7. März 2010 13:49:09 schrieb Thomas Moritz:
cp -f /etc/sudoers /etc/sudoers_old cat /etc/sudoers_old | sed -e '/###-###/,/*/ s/$oldhostname/$newhostname/g'
/etc/sudoers
Ganz schön umständlich - und gefährlich ;-) 1. Prüfe immer ab, ob ein Kopieren geklappt hat, bevor Du das Original überschreibst: cp -f /etc/sudoers /etc/sudoers_old && ... 2. *Useless use of cat award* sed -e '...' /etc/sudoers_old >/etc/sudoers 3. Nutze "Inline Editing" des sed: sed -e -i '...' /etc/sudoers Das kannst Du bei Bedarf auch mit dem Anlegen eines Backups verbinden (siehe Manual-Page). Gruß Jan -- Homepage: http://www.jan-trippler.de -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Am Sonntag, 7. März 2010 14:08:21 schrieb Jan Trippler: Hallo Jan,
Ganz schön umständlich - und gefährlich ;-)
1. Prüfe immer ab, ob ein Kopieren geklappt hat, bevor Du das Original überschreibst: cp -f /etc/sudoers /etc/sudoers_old && ...
Ja richtig!
2. *Useless use of cat award* sed -e '...' /etc/sudoers_old >/etc/sudoers
Ja - Danke :-)
3. Nutze "Inline Editing" des sed: sed -e -i '...' /etc/sudoers Das kannst Du bei Bedarf auch mit dem Anlegen eines Backups verbinden (siehe Manual-Page).
Wenn ich Start/Endmarke setze, habe ich ein Problem mit -i. Ansonsten waere das Umschreiben ganz einfach, wie in meinem ersten Posting geschrieben: sed -i "s/$oldhostname/$newhostname/g" /etc/sudoers MfG Th. Moritz -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Moin, Am Sonntag, 7. März 2010 15:45:16 schrieb Thomas Moritz:
Wenn ich Start/Endmarke setze, habe ich ein Problem mit -i. Ansonsten waere das Umschreiben ganz einfach, wie in meinem ersten Posting geschrieben:
sed -i "s/$oldhostname/$newhostname/g" /etc/sudoers
Was für ein Problem? Ging bei mir mit einer Testdatei ganz hervorragend: jan@jack:~/tmp> old=blubb jan@jack:~/tmp> new=blibb jan@jack:~/tmp> cat jt.txt # bla bla bla # bla bla bla ###-### bla blubb bli bla blo bla blobb bli bla blo andere Zeile usw. jan@jack:~/tmp> sed -i '/###-###/,/*/s/'"$old"'/'"$new"'/g' jt.txt jan@jack:~/tmp> cat jt.txt # bla bla bla # bla bla bla ###-### bla blibb bli bla blo bla blobb bli bla blo andere Zeile usw. Gruß Jan -- Homepage: http://www.jan-trippler.de -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Am Sonntag, 7. März 2010 16:01:24 schrieb Jan Trippler: Hallo Jan,
Was für ein Problem? Ging bei mir mit einer Testdatei ganz hervorragend: jan@jack:~/tmp> old=blubb
jan@jack:~/tmp> sed -i '/###-###/,/*/s/'"$old"'/'"$new"'/g'
Ich habe es geahnt! Ein Fehler, den ich ueber alle Tests mitgeschleppt habe... sed -i '/###-###/,/*/ s/... ^dieses Leerzeichen habe ich die ganze Zeit uebersehen und war schon voellig verzweifelt! ManOhMan. Besten Dank nochmal! MfG Th. Moritz -- Mein Rechner hat mehr Heizleistung, als meine Heizung Rechenleistung! -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
participants (2)
-
Jan Trippler
-
Thomas Moritz