Esta não é uma solução direta, mas parece que você poderia usar o recurso on commit
em seu arquivo de configuração DHCP. Aqui está um exemplo deste intitulado: Executar um script quando o ISC DHCP distribuir uma nova concessão .
No arquivo dhcpd.conf
, você pode criar ações em vários eventos, como quando uma concessão é concedida.
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);
}
...
Quando o script acima, dhcpevent
, é executado, ele passa 4 argumentos.
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
são variáveis em que, neste exemplo, partes de outros metadados foram analisadas e armazenadas antes da execução do script. Essas variáveis são então passadas junto com outros itens para o script do evento.
Você poderia dividir essa abordagem em um script em que você poderia controlar o número de IPs que foram arrendados ou talvez você poderia interrogar o arquivo de status de concessão real que o servidor DHCP rastreia essas informações ( /var/lib/dhcpd/dhcpd.leases
) e, em seguida, informe se esses arquivos têm um número de concessões que excede sua cota.
Referências