programme:dhcpdnsadmin:vlan_20180531
- VLAN.py
#!/usr/bin/python3
'''
VLAN Klasse
RH - Mo 28. Mai 09:50:05 CEST 2018
'''
class VLAN:
'''
VLAN Klasse für Vlan-Dateien
'''
def __init__(self, full_fn, l_devices):
'''
Constructor
'''
print(self.__class__.__name__)
self._full_fn = full_fn
self.l_devices = l_devices
self._lines = []
#self.l_macadr = []
self.l_devices_vlandat = []
self.l_macadr_vlandat = []
self.l_ip_vlandat = []
def read_vlan_mac(self, l_macadr):
""" 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_devices)
zaehler = 0
while zaehler < durchlaeufe:
dev = self.l_devices[zaehler]
for line in self._lines:
if line.startswith(dev):
print("dev_name '{}' gefunden".format(self.l_devices))
print("Hole MAC-Adr. aus Line: '{}'".format(line))
l_line = line.split()
l_macadr.append(l_line[1])
zaehler += 1
return l_macadr
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/neutron/Dokumente/Projekte/vlan1234.in"
devices = 'e1234 e1235 e1236'
l_devices = devices.split()
# 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
programme/dhcpdnsadmin/vlan_20180531.txt · Zuletzt geändert: 2020/11/13 13:54 von pulsar