programme:dhcpdnsadmin:vlan
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.txt · Zuletzt geändert: 2020/11/13 13:54 von pulsar