#!/usr/bin/env python # -*- coding: utf8 -*- # # Copyright (c) Odd Stråbø # License: MIT - https://opensource.org/licenses/MIT # import re input = '/etc/dhcpd.conf' data = open(input, 'rb').read() R = rb'^host\ (?P[^\ ]+)\ \{(?P.*?)\}' it = re.finditer(R, data, flags=(re.MULTILINE | re.DOTALL)) for item in it: g = item.groups() gd = item.groupdict() name = gd.get('name') content = gd.get('content') m = re.search(rb'hardware\ ethernet[\ \t](?P[0-9a-fA-F:]+);', content) mac = None if m: mac = m.group('mac') m = re.search(rb'fixed-address[\ \t](?P[0-9\.]+);', content) ip = None if m: ip = m.group('ip') res = { 'name': name.decode(), 'mac': mac.decode(), 'ip': ip.decode(), } print("# {0}".format(res)) print("echo Adding {name}: {mac} = {ip}".format(**res)) print('') print("HOSTID=$(uci add dhcp host)") print("uci set dhcp.${{HOSTID}}.name={name}".format(**res)) print("uci set dhcp.${{HOSTID}}.mac={mac}".format(**res)) print("uci set dhcp.${{HOSTID}}.ip={ip}".format(**res)) print('') print('') print("echo Commiting the following changes:") print("uci changes") print("uci commit")