Преобразовать / etc / ethers в /etc/dhcpd.conf - PullRequest
0 голосов
/ 25 февраля 2019

Мне нужно было преобразовать конфигурацию DHCP-сервера на основе dnsmasq в ISC dhcpd, поэтому необходимо было перенести большую группу фиксированных IP-адресов в новый формат.

Формат ввода:

84:2b:2b:19:05:a7 192.168.14.6
00:50:56:00:00:07 192.168.14.7
...

Вывод должен быть примерно таким:

host myhost1 {
  hardware ethernet 84:2b:2b:19:05:a7
  fixed address 192.168.14.6
}

Имя хоста должно быть разрешено с помощью обратного DNS-запроса.

1 Ответ

0 голосов
/ 25 февраля 2019

Вот пример скрипта Python (код для большей ясности):

import socket
import re
import sys

ethers_file = open(sys.argv[1],'r')
for line in ethers_file:
    values = line.split()
    mac = None
    ip = None
    if len(values) >=1 and re.match( r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$',values[0]) :
       mac = values[0]
    if len(values) >=2 and re.match( r'^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$',values[1]) :
       ip = values[1]
    hostname = None
    if (mac is not None and ip is not None) :
        try:
            resolve_values = socket.gethostbyaddr(ip)
            hostname = resolve_values[0];
        except:
            hostname = "host_" + ip.replace("\\.","_")
    if (mac is not None and ip is not None) :
        print "host " + hostname + " {"
        print "  hardware ethernet " + mac
        print "  fixed address " + ip
        print "}"
ethers_file.close()
...