рекомендации по языку программирования для Expressing Network Configs - PullRequest
0 голосов
/ 28 сентября 2011

Хотелось бы посмотреть, есть ли язык для выражения конфигурации сети. Я могу использовать M4 и YAML для макросов некоторых конфигов, но с условными выражениями они, похоже, ломаются.

Любые рекомендации?

Спасибо, Neel

1 Ответ

0 голосов
/ 25 января 2012

Мой Язык программирования NCD может быть именно тем, что вы ищете.

Вот пример программы для настройки интерфейса проводной сети с DHCP (такой же, как в вики):

process lan {
    # Set device.
    var("eth0") dev;

    # Wait for device, set it up, and wait for network cable.
    net.backend.waitdevice(dev);
    net.up(dev);
    net.backend.waitlink(dev);

    # DHCP configuration.
    # net.ipv4.dhcp() will block here until it obtaines an IP address.
    # Note that it will only obtain the IP address, and *not* assign it;
    # we do that with a separate command below.
    net.ipv4.dhcp(dev) dhcp;

    # Check IP address - make sure it's not local.
    # If you have other reserved subnets around, check for those too.
    ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
    ifnot(test_local);

    # Assign IP address, as obtained by DHCP.
    net.ipv4.addr(dev, dhcp.addr, dhcp.prefix);

    # Add default route, as obtained by DHCP.
    net.ipv4.route("0.0.0.0", "0", dhcp.gateway, "20", dev);

    # Configure DNS servers, as obtained by DHCP.
    net.dns(dhcp.dns_servers, "20");
}

Обязательно прочитайте всю вики-страницу NCD. NCD способен гораздо больше, чем может показаться на первый взгляд (скажем, условные выражения, циклы, динамическая конфигурация неизвестных устройств ...). Он может даже выполнять некоторые не связанные с сетью задачи, например, события устройства ввода отчетов (клавиатура, мышь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...