You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2007-02-15 19:56:21

ser_glpi
Member
From: PARIS
Registered: 2006-01-25
Posts: 140
Website

petite contribution au plugin DHCP

Voici notre petite contribution de l'ENSAM Paris à ce plugin afin de générer aussi un fichier texte afin d'automatiser la mise à jour du serveur DHCP en ne modifiant que la partie statique, sans passer par un copier-coller.

<?php
/*
----------------------------------------------------------------------
GLPI - Gestionnaire Libre de Parc Informatique
Copyright (C) 2003-2005 by the INDEPNET Development Team.

http://indepnet.net/   http://glpi.indepnet.org
----------------------------------------------------------------------

LICENSE

    This file is part of GLPI.

    GLPI is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    GLPI is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with GLPI; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
------------------------------------------------------------------------
*/

// ----------------------------------------------------------------------
// Original Author of file: Julien Dombre
// Purpose of file:
// ----------------------------------------------------------------------

include ("_relpos.php");
$NEEDED_ITEMS=array("computer","printer");
include ($phproot . "/inc/includes.php");

if (haveRight("config","w") || haveRight("networking","r")){

commonHeader("DHCP",$_SERVER["PHP_SELF"]);

$db=new DB;
$query="SELECT * from glpi_networking_ports WHERE device_type='".COMPUTER_TYPE."' OR device_type='".PRINTER_TYPE."' ORDER BY ifaddr";
$result=$db->query($query);

$spaces="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";

$network="";
$ci=new CommonItem();

//je nomme l'endroit et le nom(et l'extension) où se trouvera le fichier généré. Ici dans le répertoire où se trouve le fichier qui génére la partie statique du DHCP (par exemple /var/www/glpi/plugins/dhcp. Remarque: il faut donner les droits suffisant au répertoire où se trouvera le fichier créé et rempli par l'exécution du script ../dhcp/index.php
$filename="dhcp.txt";

//ici je vérifie la présence d'un fichier existant et j'en créé une copie!
if (file_exists($filename)) {
rename($filename,date("d-m-Y-h-i-s")."_".$filename);
}

//j'ouvre le fichier à générer
$fichier=fopen($filename,"w");

//j'initialise $premiereligne à zéro(voir plus bas!)
$premiereligne=0;

while ($line=$db->fetch_array($result))

if (strlen($line['ifaddr'])>0 || strlen($line['ifmac'])>0){
$addr=split("\.",$line["ifaddr"]);

$network_tmp=$addr[0].".".$addr[1].".".$addr[2];
// New network
if ($network!=$network_tmp){
if ($network!="") echo "}<br>\n";
$network=$network_tmp;
echo "<br>subnet $network.0 netmask 255.255.255.0 {<br>\n";
echo $spaces."option broadcast-address $network.255;<br><br>\n";

//Si $premièreligne!=0 alors j'affiche l'accolade fermante au début du prochaian sous-réseau, et afin que l'accolade fermante du 1er SUBNET n'apparaisse pas en première ligne pour la 1ère incrémentation!
if ($premiereligne!=0) {
    fwrite($fichier,"}");
}

//$sousreseau = valeur de la chaine calculée par sous-réseau ne devant apparaitre qu'un seule fois pour chaque sous-réseau. J'écris la chaine dans le fichier à chaque nouveau sous-réseau.
$sousreseau="\n subnet $network.0 netmask 255.255.255.0 {\n\t option broadcast-address $network.255;";
fwrite($fichier,$sousreseau);

//j'incrémentante $premiereligne afin que la condition ci-dessus soit remplie $premièreligne!=0 .
$premiereligne=1;

}

if ($ci->getFromDB($line["device_type"],$line["on_device"])){
    echo $spaces.$spaces."host ".$ci->getName()." {<br>\n";
    echo $spaces.$spaces.$spaces."hardware ethernet ".$line["ifmac"]."<br>\n";
    echo $spaces.$spaces.$spaces."fixed-address ".$line["ifaddr"]."<br>\n";
    echo $spaces."}<br>\n";
   
//$valeurhost les paramètres de chaque machine nom, @MAC, @IP "fixée"
$valeurhost="\n\t host ".$ci->getName()." {\n\t\t hardware ethernet {$line["ifmac"]};\n\t\t fixed-address {$line["ifaddr"]}\n\t}";
//J'écris le résultat du traitement et je rajoute chr(13).chr(10) pour la présentation dans le fichier "texte" de résultat.
fwrite($fichier,$valeurhost.chr(13).chr(10));   
   
}
      
}

//Je suis sorti de la boucle de génération => je ferme mon fichier généré
fclose($fichier);

if ($network!="") echo "}<br>\n";

}
commonFooter();

?>


GLPI  0.84.8 - Plateforme PROD:  Apache/2.2.22 (Debian) PHP 5.4.36-0+deb7u3 - Operating system: Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64, MySQL 5.5.41-0+wheezy1-log

Offline

#2 2007-02-16 00:20:21

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: petite contribution au plugin DHCP


Xavier Caillaud
Blog GLPI Infotel

Offline

#3 2007-02-16 13:04:14

ser_glpi
Member
From: PARIS
Registered: 2006-01-25
Posts: 140
Website

Re: petite contribution au plugin DHCP

Youpi smile
il manquera d'attribuer le bon "netmask" voire la gestion en CIDR des LAN mais bon c'est un début.

Plein d'encouragements à l'équipe.


GLPI  0.84.8 - Plateforme PROD:  Apache/2.2.22 (Debian) PHP 5.4.36-0+deb7u3 - Operating system: Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64, MySQL 5.5.41-0+wheezy1-log

Offline

Board footer

Powered by FluxBB