diff --git a/kea-mgmt.py b/kea-mgmt.py new file mode 100644 index 0000000..4898849 --- /dev/null +++ b/kea-mgmt.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +import requests +import json +import re +import pprint + + +url = "http://localhost:8000/" +headers = {"Content-Type": "application/json"} + + +# Validate for correct IPv4 address syntax +def is_valid_ipv4(ip_address): + ip_regex = re.compile(r'^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)(\.(?!$)|$)){4}$') + return bool(ip_regex.match(ip_address)) + + +print("Choose action to execute:") +print("1. list all DHCP4 leases") +print("2. resend specific IP address to DNS server") + +choice = int(input("Enter choice: ")) + +if choice == 1: + data = { + "command": "lease4-get-all", + "service": [ + "dhcp4" + ] + } +elif choice == 2: + while True: + print("Please enter an IPv4 address:") + ip_address = input() + + if is_valid_ipv4(ip_address): + break + else: + print("Invalid IPv4 address. Please try again.") + + data = { + "command": "lease4-resend-ddns", + "arguments": { + "ip-address": ip_address + }, + "service": [ + "dhcp4" + ] + } +else: + print("Invalid choice.") + exit() + +# Get the json data from the server +response = requests.post(url, headers=headers, data=json.dumps(data)) + +# Make sure the request was successful +response.raise_for_status() + +try: + pprint.pprint(response.json()) +except json.JSONDecodeError: + print("Error: The server response is not in a valid JSON format.")