割り当てられたDHCPアドレスを一覧表示するコマンド

割り当てられたDHCPアドレスを一覧表示するコマンド

どのアドレスが割り当てられたかをdhcpdサーバーに問い合わせるために使用できるコマンドはありますか?

ベストアンサー1

isc-dhcpdパッケージのバージョンには、4.3.1リースを一覧表示する次のコマンドがあります。

dhcp-lease-list --lease PATH_TO_LEASE_FILE

これは、以前のDHCPバージョンもサポートする単純なPerlスクリプトです。以下からコピーを見ることができます。Debian ソースコードまたは公式DHCP展開(真ん中contrib/)も。

出力は美しいです。

$ perl contrib/dhcp-lease-list.pl --lease /var/db/dhcpd/dhcpd.leases
To get manufacturer names please download http://standards.ieee.org/regauth/oui/oui.txt to /usr/local/etc/oui.txt
MAC                IP              hostname       valid until         manufacturer
===============================================================================================
90:27:e4:f9:9d:d7  192.168.0.182   iMac-de-mac    2015-12-12 01:37:06 -NA-
d8:a2:5e:94:40:81  192.168.0.178   foo-2          2015-12-12 01:04:56 -NA-
e8:9a:8f:6e:0f:60  192.168.0.127   angela         2015-12-11 23:55:32 -NA-
ec:55:f9:c5:f2:55  192.168.0.179   angela         2015-12-11 23:54:56 -NA-
f0:4f:7c:3f:9e:dc  192.168.0.183   kindle-1234567 2015-12-11 23:54:31 -NA-
f4:ec:38:e2:f9:67  192.168.0.185   -NA-           2015-12-11 23:55:40 -NA-
f8:d1:11:b7:5a:62  192.168.0.184   -NA-           2015-12-11 23:57:34 -NA-

提案されているようにファイルをダウンロードするとうまく機能しますoui.txtが、次のパッチを適用しないと出力が壊れる可能性があります。

--- dhcp-lease-list.pl.orig     2015-12-12 12:30:00.000000000 -0500
+++ dhcp-lease-list.pl  2015-12-12 12:54:31.000000000 -0500
@@ -41,7 +41,7 @@
     if (defined $oui) {
        $manu = join('-', ($_[0] =~ /^(..):(..):(..):/));
        $manu = `grep -i '$manu' $oui | cut -f3`;
-       chomp($manu);
+       $manu =~ s/^\s+|\s+$//g;
     }

     return $manu;
@@ -142,7 +142,7 @@
     }
     foreach (@leases) {
        if ($opt_format eq 'human') {
-          printf("%-19s%-16s%-15s%-20s%-20s\n",
+          printf("%-19s%-16s%-14.14s %-20s%-20s\n",
                  $_->{'mac'},       # MAC
                  $_->{'ip'},        # IP address
                  $_->{'hostname'},  # hostname

パッチはISC-Bugs#41288として上流に提出され、レビューを待っています。

おすすめ記事