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