Czy istnieje polecenie, którego mogę użyć, aby zapytać serwer dhcpd, które adresy zostały przypisane?
21
Nie, ten serwer informacji można pobrać tylko z serwera DHCP. Te informacje są zawarte w pliku .lease serwera DHCP: /var/lib/dhcpd/dhcpd.leases
jeśli używasz serwera DHCP ISC.
$ 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";
}
...
...
/var/lib/dhcp/dhcpd.leases
(tj. Nied
na końcu pierwszegodhcp
...)isc-dhcpd
wersja pakietu4.3.1
ma następującą komendę, aby wyświetlić listę dzierżaw:Jest to prosty skrypt skryptu perla, który obsługuje również starsze wersje DHCP. Kopię można zobaczyć w kodzie źródłowym Debiana lub w oficjalnej dystrybucji DHCP (in
contrib/
).Wynik jest ładny:
Ładniej jest pobrać
oui.txt
plik zgodnie z sugestią, ale wtedy dane wyjściowe mogą zostać zniekształcone, chyba że zastosujesz następującą łatkę:Ta łatka została przesłana wcześniej jako ISC-Bugs # 41288 i oczekuje na sprawdzenie.
źródło
Do uzyskania wyniku można użyć komendy egrep:
Wynik:
źródło
Większość powyższych odpowiedzi jest częściowa. I szczerze mówiąc, nie ma prostego rozwiązania. 1) Możesz przeanalizować plik bazy danych dhcpd.leases i uzyskać informacje o aktywnych dzierżawach, ale nie uzyskasz informacji o ŻADNYCH STAŁYCH adresach (przypisanych przez wiersz taki jak:
To również nie daje żadnych informacji na temat tego, kiedy ostatni raz wysłano potwierdzenie do komputera.
2) z drugiej strony możesz przeanalizować plik dhcpd.log w celu wyszukania linii ack (wyglądają tak):
Ale tak naprawdę powinieneś zrobić OBA. Najpierw przeanalizuj plik dziennika, a następnie zaktualizuj plik informacjami uzyskanymi z pliku dhcpd.leases z bazą danych pod kątem brakujących informacji, takich jak początek leasingu itp.
Teraz: grałem około 2 pełnych dni roboczych, dopóki nie stworzyłem rozwiązania, które tworzy tabelę HTML ze WSZYSTKIMI aktywnymi dzierżawami, zarówno FIXED, jak i dynamicznymi. Oto kod, który możesz umieścić w folderze cgi-bin lub gdziekolwiek.
Pamiętaj, że: 1) powyższy skrypt wymaga niewielkiej modyfikacji przed uruchomieniem w TWOIM środowisku, musisz zmodyfikować lokalizacje plików i jedno wyrażenie regularne w zależności od formatu pliku dziennika. Zobacz komentarz w skrypcie. 2) powyższy skrypt nie sprawdza, czy adres IP nie jest powtarzany w tabeli ACK, jeśli 2 różne maszyny otrzymały ten sam adres w ciągu ostatnich dni. Jest to zgodne z projektem (to, czego osobiście potrzebowałem, aby zobaczyć każdy adres MAC, który był obecny w mojej sieci w ciągu ostatnich dni) - możesz go łatwo zmodyfikować, w kodzie jest gotowa sekcja, wystarczy dodać jeden warunek.
Mam nadzieję że ci się spodoba.
źródło
Format plików dzierżawy zmienił się, a przynajmniej jest inny przy użyciu
dhcpcd5
. Aby zobaczyć na dzierżawę maszwlan0
do sieci WiFiMyNetwork
, trzeba spojrzeć na ten plik (lub coś podobnego)/var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease
.Ten plik jest plikiem binarnym. (Dlaczego? Nie wiem. Może zaoszczędzę trochę cennych cykli procesora podczas analizowania? Blech.) Aby go wyświetlić, użyj
dhcpcd --dumplease
, który analizuje plik binarny ze STDIN i wyświetla wersję czytelną dla człowieka:Z drugiej strony, jeśli chcesz tylko zobaczyć, do czego przypisana
wlan0
jest bieżąca dzierżawa , możesz po prostu zrobić:źródło
Właściwie napisałem coś bash, aby spróbować to uzyskać. Zapisuje każdy adres IP w tym samym pliku nazw, więc jeśli kolejny pojawi się ponownie, zastąpi poprzedni plik, dlatego nie będzie żadnych duplikatów. Użyje również oui.txt, aby znaleźć producenta danego adresu MAC.
Sprawdź, czy możesz go użyć.
źródło