[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-clonage/sources/www/tftp/ -> action_memtest_tftp.php (source)

   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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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&nbsp;: <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  ?>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1