할당된 DHCP 주소를 나열하는 명령

할당된 DHCP 주소를 나열하는 명령

어떤 주소가 할당되었는지 dhcpd 서버에 문의하는 데 사용할 수 있는 명령이 있습니까?

답변1

isc-dhcpd패키지 버전에는 4.3.1임대를 나열하는 다음 명령이 있습니다.

dhcp-lease-list --lease PATH_TO_LEASE_FILE

이것은 이전 DHCP 버전도 지원하는 간단한 Perl 스크립트입니다. 다음에서 사본을 볼 수 있습니다.데비안 소스 코드또는공식 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.leasesISC의 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확인 하려면 다음 파일(또는 유사한 파일)을 확인해야 합니다 .wlan0MyNetwork/var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease

이 파일은 바이너리 파일입니다. (왜? 모르겠어요. 구문 분석할 때 귀중한 CPU 사이클을 절약하기 위해? Blech.) 이를 보려면 dhcpcd --dumpleaseSTDIN에서 바이너리를 구문 분석하고 사람이 읽을 수 있는 버전을 출력하는 를 사용하세요.

cat /var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease | dhcpcd --dumplease

반면에 현재 할당된 임대를 확인하려면 wlan0다음을 수행하면 됩니다.

dhcpcd --dumplease wlan0

관련 정보