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')