どのアドレスが割り当てられたかを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として上流に提出され、レビューを待っています。
答え2
いいえ、この情報はサーバー側のDHCPサーバーからのみ入手できます。/var/lib/dhcpd/dhcpd.leases
ISCのDHCPサーバーを使用している場合、この情報はDHCPサーバーの.leaseファイルに含まれています。
はい
$ more /var/lib/dhcpd/dhcpd.leases
# All times in this file are in UTC (GMT), not your local timezone. This is
# not a bug, so please don't ask about it. There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0.5-RedHat
lease 192.168.1.100 {
starts 4 2011/09/22 20:27:28;
ends 1 2011/09/26 20:27:28;
tstp 1 2011/09/26 20:27:28;
binding state free;
hardware ethernet 00:1b:77:93:a1:69;
uid "\001\000\033w\223\241i";
}
...
...
答え3
egrep コマンドを使用して出力を取得できます。
egrep "lease|hostname|hardware|\}" /var/lib/dhcpd/dhcpd.leases
出力:
lease 192.168.11.10 {
hardware ethernet 20:6a:8a:55:19:0a;
client-hostname "Maryam-PC";
}
lease 192.168.11.7 {
hardware ethernet 00:16:ea:51:d3:12;
client-hostname "parsoon";
}
lease 192.168.11.3 {
hardware ethernet 00:17:c4:3f:84:e3;
client-hostname "zahra-ubuntu";
}
lease 192.168.11.5 {
hardware ethernet 58:b0:35:f1:31:2f;
}
答え4
リースファイルの形式が変更されているか、少なくとも使用中です。どのWiFiネットワークリースをdhcpcd5
確認するには、次のファイル(または同様のファイル)を確認する必要があります。wlan0
MyNetwork
/var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease
このファイルはバイナリファイルです。 (なぜ?わからない。解析するときに貴重なCPUサイクルを節約するために?Blech。)これを見るには、dhcpcd --dumplease
STDINでバイナリを解析し、人間が読めるバージョンを出力するを使用してください。
cat /var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease | dhcpcd --dumplease
一方、現在割り当てられているリースを確認するには、wlan0
次のようにします。
dhcpcd --dumplease wlan0