Merge pull request #5 from roterschnee/master

Check for existing IP´s in netbox in sync_network
This commit is contained in:
José Lopes 2019-05-13 23:53:06 -03:00 committed by GitHub
commit 02d573d4fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -154,21 +154,26 @@ class NetBoxScanner(object):
hosts = self.scan(network)
self.logger('scanned', net=network, hosts=len(hosts))
for host in hosts:
self.sync_host(host)
self.sync_host(host)
ips = list()
ips.append(self.netbox.ipam.ip_addresses.all())
for ipv4 in IPv4Network(network): # cleanup
address = str(ipv4)
if not any(h[0]==address for h in hosts):
try:
nbhost = self.netbox.ipam.ip_addresses.get(address=address)
if self.tag in nbhost.tags:
nbhost.delete()
self.logger('deleted', address=nbhost.address,
description=nbhost.description)
else:
self.logger('undiscovered', address=nbhost.address,
description=nbhost.description)
except (AttributeError, ValueError):
pass
if any(ip == address for ip in ips):
if not any(h[0]==address for h in hosts):
try:
nbhost = self.netbox.ipam.ip_addresses.get(address=address)
if self.tag in nbhost.tags:
nbhost.delete()
self.logger('deleted', address=nbhost.address,
description=nbhost.description)
else:
self.logger('undiscovered', address=nbhost.address,
description=nbhost.description)
except (AttributeError, ValueError):
pass
return True
def sync_csv(self, csvfile):