"""Einlesen und Schreiben von Dateien - Adapterinformationen und MAC-Adressen""" FNAME = "ifconfig.txt" # Name der einzulesenden Datei ADAPTERS = dict() # leeres Dictionary zum Speichern der Adapterinformation # im Context wird die Datei im Lesemodus geoeffnet with open(FNAME, "r") as fid: # fid als TextIO-Objekt for linenumber, line in enumerate(fid): # fuer jede Zeile ueberpruefe, ob ... if line[0] is not " ": # es sich beim ersten Zeichen um kein # Leerzeichen handelt infos = line.split() # und mache die einzelnen Woerter zur Liste if(infos and # wenn die Liste nicht leer ist und "lo" not in infos[0] and # das es sich nicht um ein Loopback- "tun" not in infos[0]): # oder Tunnelinterface handelt, adapter, mac = infos[0], infos[4] # schreibe den Adapternamen print(linenumber, adapter, mac) # und die MAC-Adresse in das ADAPTERS[adapter] = mac # Dictionary. # Bestimme den Dateinamen fuer die Ausgabe bzw. fuer die geaenderten # MAC-Adressen: FNAME_OUT = FNAME[:FNAME.rfind(".txt")] + "_adapters.txt" FNAME_OUT2 = FNAME[:FNAME.rfind(".txt")] + "_adapters_changed.txt" with open(FNAME_OUT, "w") as fid: for adapter, mac in ADAPTERS.items(): # Schreibe die Adapternamen und MAC-Adressen in eine Datei: fid.write("Adapter: " + adapter + ", MAC: " + mac + "\n") BASEMAC = "01:23:45:ff:00:" with open(FNAME_OUT2, "w") as fid: for i, (adapter, mac) in enumerate(ADAPTERS.items()): # Bestimmte die geaenderten MAC-Adressen mac_changed = BASEMAC + "%02x" %(i+1) mac_changed = BASEMAC + "{0:02x}".format((i+1)) # und schreibe diese in eine Datei: fid.write("Adapter: " + adapter + ", MAC: " + mac_changed + "\n")