#!/usr/bin/python3 ''' VLAN Klasse RH - Mo 28. Mai 09:50:05 CEST 2018 ''' class VLAN: ''' classdocs ''' def __init__(self, full_fn): ''' Constructor ''' print(self.__class__.__name__) self._full_fn = full_fn #self.l_dev_names = l_devices self._lines = [] self.l_devices_vlandat = [] self.l_macadr_vlandat = [] self.l_ip_vlandat = [] def read_vlan_mac(self): """ Lese die MAC Adresse aus der Datei falls diese die Devices aus der Eingabe enthält """ print("read(): <-", self._full_fn) with open(self._full_fn) as f: #self._lines = f.readlines() # behält '\n' self._lines = f.read().splitlines() if not self._lines: raise OSError("'{}' ist leer!".format(self._full_fn) ) durchlaeufe = len(self.l_dev_names) zaehler = 0 while zaehler < durchlaeufe: dev = self.l_dev_names[zaehler] for line in self._lines: if line.startswith(dev): print("dev_name '{}' gefunden".format(self.l_dev_names)) print("entferne line: '{}'".format(line)) zaehler += 1 def read_vlan_make_dict(self): """ Lesefunktion für eine beliebige VLAN-Datei. Erzeugt ein Dict. aus VLAN-Dateien """ with open(self._full_fn, 'r') as vlandatei: for line in vlandatei: l_elems = line.split() self.l_devices_vlandat.append(l_elems[0]) self.l_macadr_vlandat.append(l_elems[1]) self.l_ip_vlandat.append(l_elems[2]) d_vlan = {} for dev, mac, ip in zip(self.l_devices_vlandat, self.l_macadr_vlandat, self.l_ip_vlandat ): d_vlan[dev] = [ mac, ip ] return d_vlan # # Fkt. Schreibe VLAN-Datei # def write_vlandat(self, d_vlan_fkt): ''' Schreibt die veränderten VLAN Dateien ''' with open(self._full_fn, 'w') as vlandatei: for k, v in d_vlan_fkt.items(): print ("{} {}".format(k, v)) l_data_write = [] l_data_write.append(k) l_data_write.extend(v) l_datadev_write = l_data_write[0] l_datamac_write = l_data_write[1] l_dataip_write = l_data_write[2] vlandatei.writelines("{} {} {}\n".format(l_datadev_write, l_datamac_write, l_dataip_write)) def remove_line_with_device(self, dev_name): for i, line in enumerate(self._lines): if line.startswith(dev_name): print("dev_name '{}' gefunden".format(dev_name)) print("entferne line: '{}'".format(line)) del self._lines[i] def print_lines(self): ''' Kontrolle: Ausgabe ''' for line in self._lines: print(line) if __name__ == "__main__": ''' zum TESTEN der Klasse ''' vlan_file = "/home/haferron/Anwendungen/Programme/eric5/dda_dict_class/vlans/vlan1234.in" dev_name = 'e1234' # Original: vlan = VLAN(vlan_file) vlan.read_vlan_mac() #vlan.print_lines() # Kontrolle d_vlan = vlan.read_vlan_make_dict() print(d_vlan) # Ändern: #vlan.remove_line_with_device(dev_name) #vlan.print_lines() # Kontrolle