Existe-t-il une commande que je peux utiliser pour demander au serveur dhcpd quelles adresses ont été attribuées?
21
Non, vous ne pouvez obtenir ces informations côté serveur qu'à partir du serveur DHCP. Ces informations sont contenues dans le fichier .lease du serveur DHCP:, /var/lib/dhcpd/dhcpd.leases
si vous utilisez le serveur DHCP d'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
(ie nond
à la fin du premierdhcp
...)isc-dhcpd
la version du package4.3.1
a cette commande pour lister les baux:Il s'agit d'un simple script de script perl qui prend également en charge les anciennes versions de DHCP. Vous pouvez en voir une copie dans le code source Debian ou dans la distribution DHCP officielle (en
contrib/
) également.La sortie est jolie:
C'est plus joli si vous téléchargez le
oui.txt
fichier comme suggéré, mais la sortie peut être tronquée à moins que vous n'appliquiez le patch suivant:Ce correctif a été soumis en amont sous le numéro ISC-Bugs # 41288 et attend sa révision.
la source
La commande egrep peut être utilisée pour obtenir une sortie:
Production:
la source
La plupart des réponses ci-dessus sont partielles. Et pour être honnête, il n'y a pas de solution simple. 1) Vous pouvez analyser le fichier de base de données dhcpd.leases et obtenir des informations sur les baux actifs, mais vous n'obtiendrez pas d'informations sur les adresses FIXES (attribuées par une ligne comme:
Et cela ne donne pas non plus vraiment d'informations sur la dernière fois qu'un accusé de réception DHCP a été envoyé à la machine.
2) d'autre part, vous pouvez analyser le fichier dhcpd.log pour rechercher des lignes d'ack (elles ressemblent à ceci):
Mais ce que vous devez vraiment faire, c'est de faire les deux. Analysez d'abord le fichier journal, puis mettez à jour le fichier avec les informations obtenues à partir du fichier dhcpd.leases avec la base de données pour les informations manquantes telles que le début du bail, etc.
Maintenant: j'ai joué environ 2 jours ouvrables complets jusqu'à ce que j'aie créé une solution qui crée un tableau HTML avec TOUS les baux actifs, à la fois FIXE et dynamique. Voici le code que vous pouvez placer dans votre dossier cgi-bin ou n'importe où.
Veuillez noter que: 1) le script ci-dessus doit être légèrement modifié avant d'être exécuté dans VOTRE environnement, vous devez modifier l'emplacement des fichiers et une expression régulière en fonction du format de votre fichier journal. Voir le commentaire dans le script. 2) le script ci-dessus ne vérifie pas si l'IP n'est pas répétée dans la table ACK, si 2 machines différentes ont obtenu la même adresse au cours des derniers jours. C'est par conception (ce dont j'avais personnellement besoin pour voir chaque adresse mac qui était présente dans mon réseau au cours des derniers jours) - vous pouvez facilement la modifier, il y a une section prête pour cela dans le code, ajoutez simplement une condition.
J'espère que vous aimez.
la source
Le format des fichiers de baux a changé, ou du moins il est différent lors de l'utilisation
dhcpcd5
. Pour voir le bail que vous avez surwlan0
le réseau WiFiMyNetwork
, il vous faudrait regarder ce fichier (ou quelque chose comme ça):/var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease
.Ce fichier est un fichier binaire. (Pourquoi? Je ne sais pas. Peut-être pour économiser de précieux cycles CPU en l'analysant? Blech.) Pour le voir, utilisez le
dhcpcd --dumplease
, qui analyse le binaire de STDIN et génère une version lisible par l'homme:D'un autre côté, si vous voulez simplement voir à quoi correspond le bail actuel
wlan0
, vous pouvez simplement faire:la source
J'ai en fait écrit quelque chose en bash pour essayer d'obtenir cela. Il écrit chaque adresse IP dans le même fichier de nom, donc si une autre apparaît à nouveau, il écrasera le fichier précédent, il n'y aura donc pas de doublons. Il utilisera également oui.txt pour trouver le fabricant de l'adresse MAC en question.
Voyez si vous pouvez l'utiliser.
la source