Reply -
Raw
#!/usr/bin/env python
# -*- coding: utf8 -*-
#
# Copyright (c) Odd Stråbø <oddstr13@openshell.no>
# License: MIT - https://opensource.org/licenses/MIT
#
import re
input = '/etc/dhcpd.conf'
data = open(input, 'rb').read()
R = rb'^host\ (?P<name>[^\ ]+)\ \{(?P<content>.*?)\}'
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<mac>[0-9a-fA-F:]+);', content)
mac = None
if m:
mac = m.group('mac')
m = re.search(rb'fixed-address[\ \t](?P<ip>[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")