Как отправить предупреждение, если диапазон DHCP превышен, с помощью сценария оболочки?

http://marc.info/ имеет ссылку для каждого сообщения для получения необработанного тела, и https://lkml.org/имеет (на боковой панели), связывается для загрузки, любой содержал diffs.

Существуют также архивы с доступом NNTP, который может предоставить необработанные сообщения, хотя я не попробовал это.

5
28.10.2015, 03:15
2 ответа

Вы можете подсчитать количество объявлений lease в dhcpd.leases :

dhcpd.leases(5) - Linux man page

Name

dhcpd.leases - DHCP client lease database

....

the Lease Declaration

lease ip-address { statements... }

Each lease declaration includes the single IP address that has been leased to the
client. The statements within the braces define the duration of the lease and to
whom it is assigned.

Итак, вы просто подсчитайте номер строки, начинающейся с lease , чтобы узнать номер назначенного IP-адреса:

COUNT=$(grep -c '^lease' /var/lib/dhcpd/dhcpd.leases)

if [[ $COUNT eq 20 ]]
then
    #do something here
fi
6
27.01.2020, 20:33

Это не прямое решение, но, похоже, вы можете использовать функцию on commit в вашем файле конфигурации DHCP. Вот пример из этой статьи под названием: Выполнение сценария при передаче ISC DHCP новой аренды.

В файле dhcpd.conf вы можете создавать действия на различные события, например, когда выдается аренда.

subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers  192.168.1.2;

    on commit {
        set clip = binary-to-ascii(10, 8, ".", leased-address);
        set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
        execute("/usr/local/sbin/dhcpevent", "commit", clip, clhw, host-decl-name);
    }
    ...

При запуске вышеприведенного скрипта, dhcpevent, ему передается 4 аргумента.

execute_statement argv[0] = /usr/local/sbin/dhcpevent
execute_statement argv[1] = commit
execute_statement argv[2] = 192.168.1.40
execute_statement argv[3] = 11:aa:bb:cc:dd:ee
execute_statement argv[4] = d1.jp

clipw и clhw - переменные, в которых, в данном примере, части других метаданных были разобраны и сохранены до запуска скрипта. Эти переменные затем передаются вместе с другими элементами в сценарий события.

Вы могли бы использовать этот подход в сценарии, где вы могли бы отслеживать количество IP, которые были сданы в аренду, или, возможно, вы могли бы опросить фактический файл состояния аренды, который DHCP-сервер отслеживает эту информацию (/var/lib/dhcpd/dhcpd.leases), а затем сообщить, если в этом файле есть количество аренд, превышающее вашу квоту.

Ссылки

6
27.01.2020, 20:33

Теги

Похожие вопросы