Seite 1 von 1
Hosts-Datei duchsuchen
Verfasst: Mittwoch 16. Januar 2013, 13:17
von okular
Hallo Leute,
bestimmt eine einfache Sache, bloß mit Datei-Verarbeitung habe ich noch nix machen müssen:
Ich möchte auf verschiedenen Rechnern die /etc/hosts durchsuchen und wenn eine bestimmte IP auftaucht,
die ganze Zeile löschen.
Hat da jemand etwas auf Lager...?
Vielen Dank!
okular
Re: Hosts-Datei duchsuchen
Verfasst: Mittwoch 16. Januar 2013, 13:19
von jbs
Wo ist denn dein Problem, also an welcher Stelle kommst du nicht weiter?
Re: Hosts-Datei duchsuchen
Verfasst: Mittwoch 16. Januar 2013, 13:23
von /me
okular hat geschrieben:Ich möchte auf verschiedenen Rechnern die /etc/hosts durchsuchen und wenn eine bestimmte IP auftaucht,
die ganze Zeile löschen.
Ein Löschen einer Zeile in einer Datei ist nicht direkt möglich. Du musst die Datei ohne die betreffende Zeile neu schreiben.
Re: Hosts-Datei duchsuchen
Verfasst: Mittwoch 16. Januar 2013, 13:24
von okular
Naja, ich kann zwar den Anfang einer Zeile suchen/finden aber ich kann diese nicht löschen:
Code: Alles auswählen
fil = open('file')
for l in fil.readlines():
if l.startswith('192.168.133.5'):
???
Problem ist das Löschen
Re: Hosts-Datei duchsuchen
Verfasst: Mittwoch 16. Januar 2013, 13:31
von jbs
Code: Alles auswählen
from itertools import ifilterfalse
from shutil import move
selector = lambda line: line.startswith('192.168.133.5')
with open('orig', 'r') as reader:
with open('tmp', 'w') as writer:
writer.writelines(ifilterfalse(selector, reader))
move('tmp', 'orig')
Re: Hosts-Datei duchsuchen
Verfasst: Mittwoch 16. Januar 2013, 15:07
von okular
Puhh...
Also dieses ifilterfalse kannte ich nun echt nicht! Aber scheint zu klappen!
Vielen dank für den sehr guten Hinweis..
okular
Re: Hosts-Datei duchsuchen
Verfasst: Mittwoch 16. Januar 2013, 18:07
von cofi
Es ist jetzt aber nun wirklich nicht so, dass das der Kern waere oder es nicht anders ginge:
Code: Alles auswählen
from itertools import ifilterfalse
from shutil import move
with open('orig', 'r') as reader:
with open('tmp', 'w') as writer:
for line in reader:
if not line.startswith('...'):
writer.write(line)
move('tmp', 'orig')