blob: 0975ea94ab90c3b33e667ffe71ac9a110cef820c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#!/usr/bin/env python3
#
# example/extract_addresses.py
# (c) 2021 Jonas Gunz <himself@jonasgunz.de>
# License: MIT
#
import phpipam_api
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_api.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]))
|