You are not logged in.
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=" ";
$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
Xavier Caillaud
Blog GLPI Infotel
Offline
Youpi
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