[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 /* $Id: action_memtest_tftp.php 6415 2011-06-20 14:15:39Z crob $ 3 =========================================== 4 Projet SE3 5 Dispositif SE3+TFTP+Sauvegarde/Restauration/Clonage 6 Stephane Boireau 7 Distribué selon les termes de la licence GPL 8 ============================================= 9 */ 10 11 // loading libs and init 12 include "entete.inc.php"; 13 include "ldap.inc.php"; 14 include "ihm.inc.php"; 15 //require_once "../dhcp/dhcpd.inc.php"; 16 include "printers.inc.php"; 17 18 require ("lib_action_tftp.php"); 19 20 //aide 21 $_SESSION["pageaide"]="Le_module_Clonage_des_stations#Programmer_un_memtest"; 22 23 // On active les rapports d'erreurs: 24 //error_reporting(E_ALL); 25 26 // Bibliothèque prototype Ajax pour afficher en décalé l'état des machines: 27 echo "<script type='text/javascript' src='../includes/prototype.js'></script>\n"; 28 29 // CSS pour mes tableaux: 30 echo "<link type='text/css' rel='stylesheet' href='tftp.css' />\n"; 31 32 if ((is_admin("system_is_admin",$login)=="Y")||(ldap_get_right("parc_can_clone",$login)=="Y")) 33 { 34 // Choix des parcs: 35 $parc=isset($_POST['parc']) ? $_POST['parc'] : (isset($_GET['parc']) ? $_GET['parc'] : NULL); 36 // Choix des machines: 37 $id_machine=isset($_POST['id_machine']) ? $_POST['id_machine'] : (isset($_GET['id_machine']) ? $_GET['id_machine'] : NULL); 38 39 $parametrage_action=isset($_POST['parametrage_action']) ? $_POST['parametrage_action'] : (isset($_GET['parametrage_action']) ? $_GET['parametrage_action'] : NULL); 40 41 42 // Création de la table dès que possible: 43 creation_tftp_tables(); 44 45 // Paramètres SliTaz: 46 /* 47 $nom_image=isset($_POST['nom_image']) ? $_POST['nom_image'] : (isset($_GET['nom_image']) ? $_GET['nom_image'] : NULL); 48 $src_part=isset($_POST['src_part']) ? $_POST['src_part'] : (isset($_GET['src_part']) ? $_GET['src_part'] : NULL); 49 $dest_part=isset($_POST['dest_part']) ? $_POST['dest_part'] : (isset($_GET['dest_part']) ? $_GET['dest_part'] : NULL); 50 */ 51 $auto_reboot=isset($_POST['auto_reboot']) ? $_POST['auto_reboot'] : (isset($_GET['auto_reboot']) ? $_GET['auto_reboot'] : NULL); 52 $delais_reboot=isset($_POST['delais_reboot']) ? $_POST['delais_reboot'] : (isset($_GET['delais_reboot']) ? $_GET['delais_reboot'] : NULL); 53 54 // Paramètres concernant l'action immédiate sur les machines choisies: 55 $wake=isset($_POST['wake']) ? $_POST['wake'] : (isset($_GET['wake']) ? $_GET['wake'] : "n"); 56 $shutdown_reboot=isset($_POST['shutdown_reboot']) ? $_POST['shutdown_reboot'] : (isset($_GET['shutdown_reboot']) ? $_GET['shutdown_reboot'] : NULL); 57 58 59 echo "<h1>".gettext("Action rapport TFTP")."</h1>\n"; 60 61 $restriction_parcs="n"; 62 if(is_admin("system_is_admin",$login)!="Y") { 63 $restriction_parcs="y"; 64 $tab_delegated_parcs=list_delegated_parcs($login); 65 if(count($tab_delegated_parcs)==0) { 66 echo "<p>Aucun parc ne vous a été délégué.</p>\n"; 67 include ("pdp.inc.php"); 68 die(); 69 } 70 } 71 72 if(!isset($parc)){ 73 echo "<p>Cette page doit vous permettre de programmer un test de mémoire vive sur les machines choisies.<br />Le dispositif ne permet hélas pas de récupérer un rapport sur l'état des barrettes.<br />Il faut passer devant les stations pour constater l'état et taper sur ECHAP pour quitter ensuite.</p>\n"; 74 75 echo "<p>Choisissez un ou des parcs:</p>\n"; 76 77 $list_parcs=search_machines("objectclass=groupOfNames","parcs"); 78 if ( count($list_parcs)==0) { 79 echo "<br><br>"; 80 echo gettext("Il n'existe aucun parc. Vous devez d'abord créer un parc"); 81 include ("pdp.inc.php"); 82 exit; 83 } 84 sort($list_parcs); 85 86 echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n"; 87 88 // Affichage des parcs sur 3/4 colonnes 89 $nb_parcs_par_colonne=round(count($list_parcs)/3); 90 echo "<table border='0'>\n"; 91 echo "<tr valign='top'>\n"; 92 echo "<td> </td>\n"; 93 echo "<td align='left'>\n"; 94 for ($loop=0; $loop < count($list_parcs); $loop++) { 95 if(($loop>0)&&(round($loop/$nb_parcs_par_colonne)==$loop/$nb_parcs_par_colonne)){ 96 echo "</td>\n"; 97 echo "<td align='left'>\n"; 98 } 99 100 if(($restriction_parcs=="n")||(in_array($list_parcs[$loop]["cn"], $tab_delegated_parcs))) { 101 echo "<label for='parc_$loop'><input type='checkbox' id='parc_$loop' name='parc[]' value=\"".$list_parcs[$loop]["cn"]."\""; 102 if(count($list_parcs)==1) {echo " checked";} 103 echo " />".$list_parcs[$loop]["cn"]."</label>\n"; 104 echo "<br />\n"; 105 } 106 } 107 108 echo "</td>\n"; 109 echo "</tr>\n"; 110 echo "</table>\n"; 111 112 echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider\" /></p>\n"; 113 114 echo "</form>\n"; 115 116 echo "<script type='text/javascript'> 117 nb_parcs=0; 118 id_parc=''; 119 for(i=0;i<$loop;i++) { 120 if(document.getElementById('parc_'+i)) { 121 nb_parcs++; 122 id_parc='parc_'+i; 123 } 124 } 125 if(nb_parcs==1) { 126 document.getElementById(id_parc).checked=true; 127 } 128 </script>\n"; 129 130 echo "<p><a href='index.php'>Retour à l'index</a>.</p>\n"; 131 } 132 else { 133 if(!isset($_POST['parametrage_action'])){ 134 135 echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n"; 136 echo "<input type=\"hidden\" name=\"parametrage_action\" value=\"1\" />\n"; 137 $max_eff_parc=0; 138 for($i=0;$i<count($parc);$i++){ 139 140 echo "<h2>Parc $parc[$i]</h2>\n"; 141 echo "<input type=\"hidden\" name=\"parc[]\" value=\"$parc[$i]\" />\n"; 142 143 $mp=gof_members($parc[$i],"parcs",1); 144 $nombre_machine=count($mp); 145 sort($mp); 146 147 //echo "<table border='1'>\n"; 148 echo "<table class='crob'>\n"; 149 echo "<tr>\n"; 150 151 echo "<th>Nom</th>\n"; 152 echo "<th>Etat</th>\n"; 153 echo "<th>Session</th>\n"; 154 echo "<th>Config DHCP</th>\n"; 155 156 //echo "<th>Sauvegarde</th>\n"; 157 echo "<th>Rapport<br />\n"; 158 echo "<a href='#' onclick='check_machine($i,\"check\");return false'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Tout cocher\" title=\"Tout cocher\" /></a>\n"; 159 echo " / <a href='#' onclick='check_machine($i,\"uncheck\");return false'><img src=\"../elements/images/disabled.gif\" border='0' alt=\"Tout décocher\" title=\"Tout décocher\" /></a>\n"; 160 echo "</th>\n"; 161 echo "<th>Actions programmées</th>\n"; 162 echo "</tr>\n"; 163 164 for ($loop=0; $loop < count($mp); $loop++) { 165 $mpenc=urlencode($mp[$loop]); 166 167 // Test si on a une imprimante ou une machine 168 $resultat=search_imprimantes("printer-name=$mpenc","printers"); 169 $suisje_printer="non"; 170 for ($loopp=0; $loopp < count($resultat); $loopp++) { 171 if ($mpenc==$resultat[$loopp]['printer-name']) { 172 $suisje_printer="yes"; 173 continue; 174 } 175 } 176 177 if($suisje_printer=="non") { 178 // Réinitialisation: 179 $id_machine=""; 180 181 echo "<tr>\n"; 182 echo "<td width='20%'>".$mp[$loop]."</td>\n"; 183 184 // Etat: allumé ou éteint 185 echo "<td width='20%'>"; 186 $mp_curr=search_machines2("(&(cn=$mpenc)(objectClass=ipHost))","computers"); 187 if ($mp_curr[0]["ipHostNumber"]) { 188 $iphost=$mp_curr[0]["ipHostNumber"]; 189 190 echo "<div id='divip$loop'>Patientez</div>\n"; 191 echo "<script type='text/javascript'> 192 // <![CDATA[ 193 new Ajax.Updater($('divip$loop'),'ajax_lib.php?ip=$iphost&mode=ping_ip',{method: 'get'}); 194 //]]> 195 </script>\n"; 196 } 197 echo "</td>\n"; 198 199 200 // Session: ouverte ou pas... sous quelle identité 201 echo "<td width='20%'>\n"; 202 echo "<div id='divsession$loop'>Patientez</div>\n"; 203 echo "<script type='text/javascript'> 204 // <![CDATA[ 205 new Ajax.Updater($('divsession$loop'),'ajax_lib.php?nom_machine=".$mp[$loop]."&mode=session',{method: 'get'}); 206 //]]> 207 </script>\n"; 208 echo "</td>\n"; 209 210 211 // Etat config DHCP: 212 // Par la suite il ne faudra pas prendre les IP dans l'annuaire, 213 // mais dans la config DHCP parce que ce sont ces IP qui seront attribuées lors du boot PXE 214 echo "<td width='20%'>\n"; 215 //$mp_curr=search_machines("(&(cn=$mpenc)(objectClass=ipHost))","computers"); 216 if ($mp_curr[0]["macAddress"]) { 217 $sql="SELECT * FROM se3_dhcp WHERE mac='".$mp_curr[0]["macAddress"]."';"; 218 // mp_curr[0]["macAddress"] correspond à une adresse mac recherchée dans l'annuaire LDAP. 219 // Si les machines ont été changées et que l'on a ré-attribué le nom, il faut penser à nettoyer l'entrée dans l'annuaire: 220 // source /usr/share/se3/sbin/variables_admin_ldap.sh 221 // ldapdelete -x -D $ROOTDN -w $PASSDN cn=NOM_MACHINE,ou=Computers,$BASEDN 222 // Et se reconnecter une fois sur la machine pour que le connexion.pl renseigne une nouvelle entrée cn=NOM_MACHINE 223 //echo "$sql<br />"; 224 $res=mysql_query($sql); 225 if(mysql_num_rows($res)>0) { 226 $lig=mysql_fetch_object($res); 227 $id_machine=$lig->id; 228 229 //echo $lig->ip; 230 echo "<img src=\"../elements/images/enabled.gif\" border='0' alt=\"$lig->ip\" title=\"$lig->ip\" />"; 231 } 232 else { 233 echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'adresse IP attribuée\" title=\"Pas d'adresse IP attribuée\" />"; 234 } 235 } 236 else { 237 echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'adresse MAC dans l'annuaire???\" title=\"Pas d'adresse MAC dans l'annuaire???\" />"; 238 } 239 echo "</td>\n"; 240 241 242 // Sélection des machines à sauvegarder: 243 echo "<td width='20%'>\n"; 244 /* 245 foreach($mp_curr[0] as $champ => $valeur) { 246 echo "\$mp_curr[0]['$champ']=$valeur<br />"; 247 } 248 */ 249 if($id_machine!=""){ 250 echo "<input type='checkbox' name='id_machine[]' id='machine_".$i."_".$loop."' value='$id_machine' />\n"; 251 } 252 else { 253 echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Il faut commencer par effectuer la configuration DHCP\" title=\"Il faut commencer par effectuer la configuration DHCP\" />"; 254 } 255 echo "</td>\n"; 256 257 258 // Action programmée 259 echo "<td>\n"; 260 if($id_machine!=""){ 261 $sql="SELECT * FROM se3_tftp_action WHERE id='".$id_machine."';"; 262 $res=mysql_query($sql); 263 if(mysql_num_rows($res)>0) { 264 $lig=mysql_fetch_object($res); 265 echo "<a href='visu_action.php?id_machine=$id_machine' target='_blank'>$lig->type programmé(e)</a>"; 266 } 267 else { 268 echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'action programmée\" title=\"Pas d'action programmée\" />"; 269 } 270 } 271 echo "</td>\n"; 272 273 echo "</tr>\n"; 274 } 275 } 276 echo "</table>\n"; 277 if($max_eff_parc<$loop) {$max_eff_parc=$loop;} 278 } 279 280 echo "<script type='text/javascript'> 281 function check_machine(num_parc,mode) { 282 for(i=0;i<$max_eff_parc;i++){ 283 if(document.getElementById('machine_'+num_parc+'_'+i)){ 284 if(mode=='check'){ 285 document.getElementById('machine_'+num_parc+'_'+i).checked=true; 286 } 287 else{ 288 document.getElementById('machine_'+num_parc+'_'+i).checked=false; 289 } 290 } 291 } 292 } 293 </script>\n"; 294 295 echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider\" /></p>\n"; 296 echo "</form>\n"; 297 298 299 } 300 else { 301 $validation_parametres=isset($_POST['validation_parametres']) ? $_POST['validation_parametres'] : (isset($_GET['validation_parametres']) ? $_GET['validation_parametres'] : NULL); 302 if(!isset($validation_parametres)) { 303 echo "<h2>Paramétrage de l'action memtest</h2>\n"; 304 305 $nombre_machines=count($id_machine); 306 if($nombre_machines==0){ 307 echo "<p>ERREUR: Il faut choisir au moins une machine.</p>\n"; 308 309 echo "<p><a href='#' onclick='history.go(-1);'>Retour au choix des machines sur lesquelles lancer le test de mémoire vive</a>.</p>\n"; 310 311 echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du/des parc(s)</a>.</p>\n"; 312 include ("pdp.inc.php"); 313 exit(); 314 } 315 316 echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n"; 317 echo "<input type=\"hidden\" name=\"parametrage_action\" value=\"1\" />\n"; 318 // Liste des parcs: 319 for($i=0;$i<count($parc);$i++){ 320 echo "<input type=\"hidden\" name=\"parc[]\" value=\"$parc[$i]\" />\n"; 321 } 322 323 // Liste des machines sur lesquelles lancer la sauvegarde: 324 $chaine=""; 325 for($i=0;$i<count($id_machine);$i++){ 326 if($i>0) {$chaine.=", ";} 327 $sql="SELECT * FROM se3_dhcp WHERE id='".$id_machine[$i]."';"; 328 //echo "$sql<br />"; 329 $res=mysql_query($sql); 330 if(mysql_num_rows($res)>0) { 331 $lig=mysql_fetch_object($res); 332 $chaine.=$lig->name; 333 echo "<input type=\"hidden\" name=\"id_machine[]\" value=\"$id_machine[$i]\" />\n"; 334 } 335 } 336 if(count($id_machine)>1){$s="s";}else{$s="";} 337 echo "<p>Machine$s concernée$s: $chaine</p>\n"; 338 339 340 // Date pour le nom de l'image à générer: 341 $aujourdhui = getdate(); 342 $mois_se3 = sprintf("%02d",$aujourdhui['mon']); 343 $jour_se3 = sprintf("%02d",$aujourdhui['mday']); 344 $annee_se3 = $aujourdhui['year']; 345 $heure_se3 = sprintf("%02d",$aujourdhui['hours']); 346 $minute_se3 = sprintf("%02d",$aujourdhui['minutes']); 347 $seconde_se3 = sprintf("%02d",$aujourdhui['seconds']); 348 349 $date_se3=$annee_se3.$mois_se3.$jour_se3; 350 351 echo "<p>Choisissez les paramètres pour le lancement du test de mémoire vive : <br />\n"; 352 353 echo "<table border='0'>\n"; 354 echo "<tr><td valign='top'>Pour la ou les machines sélectionnées: </td>\n"; 355 echo "<td>\n"; 356 echo "<table border='0'>\n"; 357 echo "<tr><td valign='top'><input type='checkbox' id='wake' name='wake' value='y' checked /> </td><td><label for='wake'>Démarrer les machines par Wake-On-Lan/etherwake<br />si elles sont éteintes.</label></td></tr>\n"; 358 echo "<tr><td valign='top'><input type='radio' id='shutdown_reboot_wait1' name='shutdown_reboot' value='wait1' /> </td><td><label for='shutdown_reboot_wait1'>Attendre le reboot des machines<br />même si aucune session n'est ouverte,</label></td></tr>\n"; 359 echo "<tr><td valign='top'><input type='radio' id='shutdown_reboot_wait2' name='shutdown_reboot' value='wait2' checked /> </td><td><label for='shutdown_reboot_wait2'>Redémarrer les machines sans session ouverte<br />et attendre le reboot pour les machines<br />qui ont des sessions ouvertes,</label></td></tr>\n"; 360 echo "<tr><td valign='top'><input type='radio' id='shutdown_reboot_reboot' name='shutdown_reboot' value='reboot' /> </td><td><label for='shutdown_reboot_reboot'>Redémarrer les machines<br />même si une session est ouverte (<i>pô cool</i>).</label></td></tr>\n"; 361 echo "</table>\n"; 362 echo "</td></tr>\n"; 363 364 echo "</table>\n"; 365 366 echo "<p align='center'><input type=\"submit\" name=\"validation_parametres\" value=\"Valider\" /></p>\n"; 367 echo "</form>\n"; 368 369 } 370 else { 371 echo "<h2>Validation des paramètres du test de mémoire vive</h2>\n"; 372 373 echo "<p>Génération du fichier dans /tftpboot/pxelinux.cfg/ pour la remontée de rapports.<br />\n"; 374 375 // BOUCLE SUR LA LISTE DES $id_machine[$i] 376 377 // Numéro de l'opération de test de mémoire vive: 378 $num_op=get_free_se3_action_tftp_num_op(); 379 for($i=0;$i<count($id_machine);$i++) { 380 $sql="SELECT * FROM se3_dhcp WHERE id='".$id_machine[$i]."';"; 381 //echo "$sql<br />"; 382 $res=mysql_query($sql); 383 if(mysql_num_rows($res)==0) { 384 echo "<span style='color:red;'>La machine d'identifiant $id_machine[$i] n'existe pas dans 'se3_dhcp'.</span><br />\n"; 385 } 386 else { 387 $temoin_erreur="n"; 388 389 $lig=mysql_fetch_object($res); 390 $mac_machine=$lig->mac; 391 $nom_machine=$lig->name; 392 $ip_machine=$lig->ip; 393 394 if($restriction_parcs=="y") { 395 $temoin_erreur='y'; 396 for($loop=0; $loop<count($tab_delegated_parcs);$loop++) { 397 // La machine est-elle dans un des parcs délégués? 398 if(is_machine_in_parc($nom_machine,$tab_delegated_parcs[$loop])) {$temoin_erreur='n';break;} 399 } 400 } 401 402 if($temoin_erreur=="y") { 403 echo "<p style='color:red'>La machine $nom_machine ne vous est pas déléguée</p>\n"; 404 } 405 else { 406 echo "Génération pour $nom_machine: "; 407 408 $corrige_mac=strtolower(strtr($mac_machine,":","-")); 409 410 $chemin="/usr/share/se3/scripts"; 411 $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'memtest' '$corrige_mac' '$ip_machine' '$nom_machine'", $retour); 412 413 if(count($retour)>0){ 414 //echo "<p>"; 415 //echo "<span style='color:red;'>Il semble que la génération du fichier ait échoué...</span><br />\n"; 416 echo "<span style='color:red;'>ECHEC de la génération du fichier</span><br />\n"; 417 for($j=0;$j<count($retour);$j++){ 418 echo "$retour[$j]<br />\n"; 419 } 420 $temoin_erreur="y"; 421 //echo "</p>\n"; 422 } 423 else { 424 $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine[$i]';"; 425 $suppr=mysql_query($sql); 426 427 $timestamp=time(); 428 $sql="INSERT INTO se3_tftp_action SET id='$id_machine[$i]', 429 mac='$mac_machine', 430 name='$nom_machine', 431 date='$timestamp', 432 type='memtest', 433 num_op='$num_op', 434 infos='';"; 435 $insert=mysql_query($sql); 436 if(!$insert) { 437 echo "<span style='color:red;'>ECHEC de l'enregistrement dans 'se3_tftp_action'</span><br />\n"; 438 $temoin_erreur="y"; 439 } 440 441 /* 442 // Génération du lanceur de récupération: 443 //$dossier="/var/se3/tmp/tftp/$id_machine[$i]"; 444 $dossier="/etc/se3/www-tools/tftp/$id_machine[$i]"; 445 if(!file_exists($dossier)) { mkdir($dossier,0700);} 446 $lanceur_recup="$dossier/lanceur_recup_rapport_action_tftp.sh"; 447 $fich=fopen($lanceur_recup,"w+"); 448 // On donne 4H pour que la récup soit effectuée: 449 $timestamp_limit=time()+4*3600; 450 //fwrite($fich,"/usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' 'rapport' '$timestamp_limit'"); 451 fwrite($fich,"sudo /usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' 'rapport' '$timestamp_limit'"); 452 fclose($fich); 453 chmod($lanceur_recup,0750); 454 */ 455 456 // Ménage dans les tâches précédentes 457 @exec("sudo /usr/share/se3/scripts/se3_tftp_menage_atq.sh $id_machine[$i]",$retour); 458 459 /* 460 // Planification de la tâche 461 //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour); 462 @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour); 463 //passthru("at -f $lanceur_recup now + 1 minute",$retour); 464 if($retour) { 465 echo "<span style='color:red;'>ECHEC de la planification de la tâche.</span><br />\n"; 466 for($j=0;$j<count($retour);$j++){echo "$retour[$j]<br />\n";} 467 //echo "$retour<br />\n"; 468 $temoin_erreur="y"; 469 } 470 */ 471 472 /* 473 // Avec ça on arrive à récupérer l'info: 474 // -warning: commands will be executed using /bin/sh - 475 // -job 1572 at 2008-03-01 15:13 - 476 // Mais une fois le at repoussé, ce n'est plus www-se3, mais root qui en est proprio... 477 if(file_exists("$dossier/at.txt")) { 478 $fp=fopen("$dossier/at.txt","r"); 479 while(!feof($fp)) { 480 $ligne=fgets($fp,4096); 481 echo "<p>-".$ligne."-</p>"; 482 } 483 fclose($fp); 484 } 485 */ 486 487 /* 488 $fp=popen("at -f $lanceur_recup now + 1 minute","r"); 489 while(!feof($fp)) { 490 $ligne=fgets($fp,4096); 491 echo "<p>-".$ligne."-</p>"; 492 } 493 fclose($fp); 494 */ 495 496 if($temoin_erreur=="n") { 497 //echo "<span style='color:green;'>OK</span><br />\n"; 498 echo "<span style='color:green;'>OK</span>\n"; 499 // Application de l'action choisie: 500 echo " <span id='wake_shutdown_or_reboot_$i'></span>"; 501 502 echo "<script type='text/javascript'> 503 // <![CDATA[ 504 new Ajax.Updater($('wake_shutdown_or_reboot_$i'),'ajax_lib.php?ip=$ip_machine&nom=$nom_machine&mode=wake_shutdown_or_reboot&wake=$wake&shutdown_reboot=$shutdown_reboot',{method: 'get'}); 505 //]]> 506 </script>\n"; 507 508 509 echo "<br />\n"; 510 } 511 } 512 } 513 } 514 } 515 516 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 517 // POUVOIR TAGUER DANS LA TABLE se3_dhcp LES MACHINES QUI PEUVENT BOOTER EN PXE 518 // Ajouter un champ? 519 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 520 521 522 // On n'affiche le fichier que pour le dernier (à titre d'info): 523 if(isset($corrige_mac)) { 524 //$fich=fopen("/tftpboot/pxelinux.cfg/01-$lig1->mac","r"); 525 $fich=fopen("/tftpboot/pxelinux.cfg/01-$corrige_mac","r"); 526 if($fich) { 527 echo "<p>Pour information, voici le contenu du fichier généré:<br />\n"; 528 echo "<pre style='border:1px solid black; color:green;'>"; 529 while(!feof($fich)) { 530 $ligne=fgets($fich,4096); 531 echo htmlentities($ligne); 532 } 533 echo "</pre>\n"; 534 fclose($fich); 535 } 536 else { 537 echo "<p style='color:red;'>Il n'a pas été possible d'ouvrir le fichier /tftpboot/pxelinux.cfg/01-$corrige_mac</p>\n"; 538 } 539 } 540 } 541 } 542 echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du/des parc(s)</a>.</p>\n"; 543 } 544 } 545 else { 546 print (gettext("Vous n'avez pas les droits nécessaires pour ouvrir cette page...")); 547 } 548 549 // Footer 550 include ("pdp.inc.php"); 551 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |