mirror of
https://github.com/LibreQoE/LibreQoS.git
synced 2024-11-25 01:30:17 -06:00
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
|
#!/usr/bin/python3
|
||
|
import routeros_api
|
||
|
import csv
|
||
|
|
||
|
def pullMikrotikIPv6():
|
||
|
ipv4ToIPv6 = {}
|
||
|
routerList = []
|
||
|
with open('mikrotikDHCPRouterList.csv') as csv_file:
|
||
|
csv_reader = csv.reader(csv_file, delimiter=',')
|
||
|
next(csv_reader)
|
||
|
for row in csv_reader:
|
||
|
RouterName, IP, Username, Password, apiPort = row
|
||
|
routerList.append((RouterName, IP, Username, Password, apiPort))
|
||
|
for router in routerList:
|
||
|
RouterName, IP, inputUsername, inputPassword = router
|
||
|
connection = routeros_api.RouterOsApiPool(IP, username=inputUsername, password=inputPassword, port=apiPort, use_ssl=False, ssl_verify=False, ssl_verify_hostname=False, plaintext_login=True)
|
||
|
api = connection.get_api()
|
||
|
macToIPv4 = {}
|
||
|
macToIPv6 = {}
|
||
|
clientAddressToIPv6 = {}
|
||
|
list_dhcp = api.get_resource('/ip/dhcp-server/lease')
|
||
|
entries = list_dhcp.get()
|
||
|
for entry in entries:
|
||
|
try:
|
||
|
macToIPv4[entry['mac-address']] = entry['address']
|
||
|
except:
|
||
|
pass
|
||
|
list_dhcp = api.get_resource('/ipv6/dhcp-server/binding')
|
||
|
entries = list_dhcp.get()
|
||
|
for entry in entries:
|
||
|
try:
|
||
|
clientAddressToIPv6[entry['client-address']] = entry['address']
|
||
|
except:
|
||
|
pass
|
||
|
list_dhcp = api.get_resource('/ipv6/neighbor')
|
||
|
entries = list_dhcp.get()
|
||
|
for entry in entries:
|
||
|
try:
|
||
|
realIPv6 = clientAddressToIPv6[entry['address']]
|
||
|
macToIPv6[entry['mac-address']] = realIPv6
|
||
|
except:
|
||
|
pass
|
||
|
for mac, ipv6 in macToIPv6.items():
|
||
|
try:
|
||
|
ipv4 = macToIPv4[mac]
|
||
|
ipv4ToIPv6[ipv4] = ipv6
|
||
|
except:
|
||
|
print('Failed to find associated IPv4 for ' + ipv6)
|
||
|
return ipv4ToIPv6
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
print(pullMikrotikIPv6())
|