Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
679 connectés 

  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Réseaux

  Gérer serveur DHCP ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gérer serveur DHCP ?

n°79196
zit11
Posté le 05-04-2011 à 08:56:14  profilanswer
 

Hello,
 
Avez vous des solutions pour gérer/voir les logs plus facilement d'un serveur dhcp sous Ubuntu server ? Un outils de monitoring, voir les la durée des baux, voir quelles adresses sont prises et celles non...Avoir une vu globale du serveur quoi.
 
J'ai cherché mais je n'ai pas vu grand chose d'intéressant...à part un petit script qui permet de d'être alerter par mail dès que quelqu'un obtient une adresses (en surveillant la taille du fichier dhclient.lease) mais bon...
 
Merci d'avance :)


Message édité par zit11 le 05-04-2011 à 08:57:48

---------------
Je suis pas Superman, je suis Super-vagabond, mais toi t’es Super-pomme. Tu es très gouteuse, tu es très... biologique, très naturelle ! Tu es la pomme de ma vie.
mood
Publicité
Posté le 05-04-2011 à 08:56:14  profilanswer
 

n°79244
zit11
Posté le 06-04-2011 à 10:40:51  profilanswer
 

Je me réponds :o
 
En gros, y a pas de gestion rapide...Mais avec 2/3 scripts on peut s'en sortir.
Voici ce que j'ai trouvé :
 
Ce petit script en perl permet de récuperer les infos de dhcpd.leases et d'avoir un ptit récapitulatif du bail, du constructeur (suivant l'adresse mac) avec le fichier oui.txt qui contient la liste des constructeurs.
 
script perl :

Code :
  1. #!/usr/bin/perl
  2. #
  3. # Shows current leases.
  4. #
  5. # THIS SCRIPT IS PUBLIC DOMAIN, NO RIGHTS RESERVED!
  6. # 2008-07-13, Christian Hammers <ch@lathspell.de>
  7. #
  8. use strict;
  9. use warnings;
  10. use POSIX qw(strftime);
  11. my $LEASES = '/var/lib/dhcp3/dhcpd.leases';
  12. my @all_leases;
  13. my @leases;
  14. my @OUIS = ('/usr/share/misc/oui.txt', '/usr/local/etc/oui.txt');
  15. my $OUI_URL = 'http://standards.ieee.org/regauth/oui/oui.txt';
  16. my $oui;
  17. my %data;
  18. my $opt_format = 'human';
  19. my $opt_keep = 'active';
  20. ## Return manufactorer name for specified MAC address (aa:bb:cc:dd:ee:ff).
  21. sub get_manufactorer_for_mac($) {
  22.     my $manu = "";
  23.     if (defined $oui) {
  24.         $manu = join('-', ($_[0] =~ /^(..):(..):(..):/));
  25.         $manu = `grep -i '^$manu' $oui | cut -f3`;
  26.         chomp($manu);
  27.     }
  28.     return $manu;
  29. }
  30. ## Read oui.txt or print warning.
  31. sub check_oui_file() {
  32.     for my $oui_cand (@OUIS) {
  33.         if ( -r $oui_cand) {
  34.         $oui = $oui_cand;
  35.         last;
  36.         }
  37.     }
  38.     print(STDERR "Please download $OUI_URL to /usr/local/etc/oui.txt\n" ) if not defined $oui;
  39. }
  40. ## Read current leases file into array.
  41. sub read_dhcpd_leases() {
  42.     open(F, $LEASES) or die("Cannot open $LEASES: $!" );
  43.     my $content = join('', <F> );
  44.     close(F);
  45.     @all_leases = split(/lease/, $content);
  46. }
  47. ## Add manufactor name and sort out obsolet assignements.
  48. sub process_leases() {
  49.     my $gm_now = strftime("%Y/%m/%d %H:%M:%S", gmtime());
  50.     my %tmp_leases; # for sorting and filtering
  51.     # parse entries
  52.     foreach my $lease (@all_leases) {
  53.         # skip invalid lines
  54.         next if not ($lease =~ /^\s+([\.\d]+)\s+{.*starts \d+ ([\/\d\ \:]+);.*ends \d+ ([\/\d\ \:]+);.*ethernet ([a-f0-9:]+);/s);
  55.         # skip outdated lines
  56.         next if ($opt_keep eq 'active'  and  $3 lt $gm_now);
  57.         my $mac = $4;
  58.         my $date_end = $3;
  59.         my %entry = (
  60.             'ip' => $1,
  61.             'date_begin' => $2,
  62.             'date_end' => $date_end,
  63.             'mac' => $mac,
  64.             'manu' => get_manufactorer_for_mac($mac),
  65.         );
  66.         $entry{'date_begin'} =~ s#\/#-#g; # long live ISO 8601
  67.         $entry{'date_end'}   =~ s#\/#-#g;
  68.         if ($opt_keep eq 'all') {
  69.             push(@leases, \%entry);
  70.         } elsif (not defined $tmp_leases{$mac}  or  $tmp_leases{$mac}{'date_end'} gt $date_end) {
  71.             $tmp_leases{$mac} = \%entry;
  72.         }
  73.     }
  74.     # In case we used the hash to filtered
  75.     if (%tmp_leases) {
  76.         foreach (sort keys %tmp_leases) {
  77.             my $h = $tmp_leases{$_};
  78.             push(@leases, $h);
  79.         }
  80.     }
  81. }
  82. # Output all valid leases.
  83. sub output_leases() {
  84.     if ($opt_format eq 'human') {
  85.         print("#      MAC            IP             valid until           manufactorer\n" );
  86.     }
  87.     foreach (@leases) {
  88.         if ($opt_format eq 'human') {
  89.             printf("%s  %s  %s  %s\n",
  90.                 $_->{'mac'},                 # MAC
  91.                 $_->{'ip'},        # IP address
  92.                 $_->{'date_end'},  # Date
  93.                 $_->{'manu'});     # manufactor name
  94.         } else {
  95.             printf("MAC %s IP %s BEGIN %s END %s MANUFACTORER %s\n",
  96.                 $_->{'mac'},
  97.                 $_->{'ip'},
  98.                 $_->{'date_begin'},
  99.                 $_->{'date_end'},
  100.                 $_->{'manu'});
  101.         }
  102.     }
  103. }
  104. # Commandline Processing.
  105. sub cli_processing() {
  106.     while (my $arg = shift(@ARGV)) {
  107.         if ($arg eq '--help') {
  108.             print(
  109.                   "Prints active DHCP leases.\n\n".
  110.                   "Usage: $0 [options]\n".
  111.                   " --help      shows this help\n".
  112.                   " --parsable  machine readable output with full dates\n".
  113.                   " --last      prints the last (even if end<now) entry for every MAC\n".
  114.                   " --all       prints all entries i.e. more than one per MAC\n".
  115.                   "\n" );
  116.             exit(0);                 
  117.         } elsif ($arg eq '--parsable') {
  118.             $opt_format = 'parsable';
  119.         } elsif ($arg eq '--last') {
  120.             $opt_keep = 'last';
  121.         } elsif ($arg eq '--all') {
  122.             $opt_keep = 'all';
  123.         } else {
  124.             die("Unknown option $arg" );
  125.         }
  126.     }
  127. }
  128. #
  129. # main()
  130. #
  131. cli_processing();
  132. check_oui_file();
  133. read_dhcpd_leases();
  134. process_leases();
  135. output_leases();


 
- Après un autre petit script qui exécute ce script et qui envoie la sortie de celui ci en mail:
 

Code :
  1. #!/bin/sh
  2. perl dhcp.perl > out.txt
  3. sleep 10
  4. mail -s "Baux DHCP" monadresse@mail.com < out.txt


 
Voila, c'est du bidouillage mais ça fonctionne bien :o si ça peut servir à quelqu'un  :hello:


---------------
Je suis pas Superman, je suis Super-vagabond, mais toi t’es Super-pomme. Tu es très gouteuse, tu es très... biologique, très naturelle ! Tu es la pomme de ma vie.
n°79253
bardiel
Debian powa !
Posté le 06-04-2011 à 12:04:14  profilanswer
 

perl [:suri_2002]  
 
Je le garde sous la main pour mon futur perso, merci :jap:


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°79261
Power Nabo​t
Verticalement désavantagé.
Posté le 06-04-2011 à 15:37:24  profilanswer
 

Je garde ça sous le coude aussi pour un problème dans ma boîte :)


---------------
Encore une victoire de canard !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Réseaux

  Gérer serveur DHCP ?

 

Sujets relatifs
Acces serveur web impossible depuis l exterieurserveur de fichiers parfois inaccessible
outil de taxation serveur VOIP (Asterisk)Serveur d'impression 2008
Gestion des virtual machines (clients - serveur)Sous domaine avec nom de serveur
Serveur Applis stuckConseil pour achat d'un serveur
Accès au serveur bridé à 100 Mbps par Cisco 2950 ?Problemen DFS-N sur un serveur, et pas sur les autres
Plus de sujets relatifs à : Gérer serveur DHCP ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR