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