DHCPが範囲外の場合、シェルスクリプトを使用してどのように警告を送信できますか?

DHCPが範囲外の場合、シェルスクリプトを使用してどのように警告を送信できますか?

CentOS 6.5にDHCPサーバーをインストールして設定しました。また、次のようにファイルにサブネットを追加しましたdhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {
  option domain-name-servers 192.168.1.2, 8.8.8.8;
  default-lease-time 600;
  max-lease-time 7200;
  range dynamic-bootp 192.168.1.10 192.168.1.30;
  option broadcast-address 192.168.1.255;
  option routers 192.168.1.1;
  option ip-forwarding off;
}

ご覧のとおり、DHCPサーバーは20個のIPアドレスのみを割り当てることができます。シェルスクリプトを使用して20個のアドレスがすべて割り当てられた後、DHCPサーバーにシステム管理者に警告を送信させることはできますか?

答え1

leaseオプションの1つは、報告された数量を計算することです。dhcpd.リース:

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

答え2

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)からこの情報を追跡するように要求し、ファイルのリース数がクォータを超えているかどうかを報告できます。

引用する

関連情報