Benutzer-Werkzeuge

Webseiten-Werkzeuge


programme:dhcpdnsadmin:vlan

Dies ist eine alte Version des Dokuments!


VLAN Klasse für das Programm DDA

VLAN.py
#!/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._lines = []
        self.l_devices_vlandat = []
        self.l_macadr_vlandat = []
        self.l_ip_vlandat = []
 
 
 
    def read(self):
        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) )
 
 
    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/ronald/Dokumente/Projekte/vlan1234.in"
    dev_name = 'e1234'
 
    # Original:
    vlan = VLAN(vlan_file)
    #vlan.read()
    #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
programme/dhcpdnsadmin/vlan.1527442035.txt.gz · Zuletzt geändert: 2018/05/27 19:27 von pulsar