From 9f5f616e48b330e7c4443fa6351551e0c4d7783d Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Wed, 13 Jan 2021 20:43:04 +0100 Subject: add example --- example/extract_addresses.py | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100755 example/extract_addresses.py (limited to 'example/extract_addresses.py') diff --git a/example/extract_addresses.py b/example/extract_addresses.py new file mode 100755 index 0000000..020a447 --- /dev/null +++ b/example/extract_addresses.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +# +# example/extract_addresses.py +# (c) 2021 Jonas Gunz +# License: MIT +# + +import phpipam +import re + +phpipam_url="https://phpipam.example.com/" +appid="appid" +user="apiuser" +passw="P45sw0rd" + +tag='Used' +domain='sub.example.com.' +cidrs=['10.1.0.0/16','192.168.42.0/24'] + +ipam = phpipam.PhpipamAPI(phpipam_url, appid, user, passw) + +tags = ipam.addresses.getTags() +for _tag in tags: + if _tag['type'] == tag: + tag_id=_tag['id'] +if len(tag_id) == 0: + raise Exception(f'tag "{tag}" was not found.') + +print(f'tag "{tag}" has id {tag_id}') + +selected_addresses = {} + +for _cidr in cidrs: + subnets = ipam.subnets.search(search=_cidr) + + if not len(subnets) == 1: + print(f'CIDR {_cidr} has no or no exact match. Ignoring.') + continue + subnet = subnets[0] + + addresses = ipam.subnets.getAddresses(subnet_id=subnet['id']) + for _address in addresses: + hostname = _address['hostname'] + ip = _address['ip'] + + if not _address['tag'] == tag_id: + continue + if not hostname.endswith(domain.strip('.')): + continue + + if hostname in selected_addresses: + selected_addresses[hostname].append(ip) + else: + selected_addresses[hostname]=[ip] + +for _selected_address in selected_addresses: + print(_selected_address + '::' + str(selected_addresses[_selected_address])) -- cgit v1.2.3