[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-clonage/sources/scripts/ -> recup_rapport.php (source)

   1  #!/usr/bin/php
   2  <?php
   3  /*
   4  * $Id: recup_rapport.php 6314 2011-04-29 08:18:00Z crob $
   5  */
   6  
   7      if($argc < 5 || in_array($argv[1], array('--help', '-help', '-h', '-?'))){
   8          echo "Script de récupération de rapport de sauvegarde/restauration/...\n";
   9          echo "USAGE: Passer en paramètres:\n";
  10          echo "       - l'identifiant de la machine (champ 'id' de 'se3_dhcp')\n";
  11          echo "       - l'adresse IP de la machine (champ 'ip' de 'se3_dhcp')\n";
  12          echo "       - la nature de l'action lancée (sauvegarde, restauration,...)\n";
  13          echo "       - le timestamp de la date limite de la tentative de récupération.\n";
  14          exit();
  15      }
  16  
  17      $id_machine=$argv[1];
  18      $ip=$argv[2];
  19      $nature=$argv[3];
  20      $limite=$argv[4];
  21  
  22      /*
  23      require ("config.inc.php");
  24      require_once ("functions.inc.php");
  25      require_once ("lang.inc.php");
  26  
  27      include "ldap.inc.php";
  28      include "ihm.inc.php";
  29      require_once "dhcpd.inc.php";
  30  
  31      require("lib_action_tftp.php");
  32      */
  33      $chemin_include="/var/www/se3/includes";
  34  
  35      require ("$chemin_include/config.inc.php");
  36      require_once ("$chemin_include/functions.inc.php");
  37      require_once ("$chemin_include/lang.inc.php");
  38  
  39      include "$chemin_include/ldap.inc.php";
  40      include "$chemin_include/ihm.inc.php";
  41  
  42      //require_once "/var/www/se3/dhcp/dhcpd.inc.php";
  43      require("/var/www/se3/tftp/lib_action_tftp.php");
  44  
  45      // Dispositif de debug:
  46  	function fich_log_debug($texte) {
  47          global $id_machine;
  48  
  49          // Passer la variable à "y" pour activer le renseignement du fichier de log
  50          $temoin_fich_log_debug="n";
  51  
  52          if($temoin_fich_log_debug=="y") {
  53              $fich=fopen("/tmp/tftp_$id_machine.log","a+");
  54              fwrite($fich,$texte);
  55              fclose($fich);
  56          }
  57      }
  58  
  59      // On active les rapports d'erreurs:
  60      error_reporting(E_ALL);
  61  
  62      // Dossier contenant le lanceur de récupération de rapport.
  63      // www-se3 doit en être proprio ou au moins pouvoir y écrire.
  64      //$dossier="/var/se3/tmp/tftp/$id_machine";
  65      $dossier="/etc/se3/www-tools/tftp/$id_machine";
  66      $lanceur_recup="$dossier/lanceur_recup_rapport_action_tftp.sh";
  67      $tftp_pxelinux_cfg="/tftpboot/pxelinux.cfg";
  68  
  69      if(!file_exists($dossier)) { mkdir($dossier,0700);}
  70  
  71      // Ici et maintenant...
  72      $instant=time();
  73      // La date limite de récupération est-elle atteinte?
  74      if($instant>=$limite) {
  75          if(file_exists($lanceur_recup)) {
  76              unlink($lanceur_recup);
  77          }
  78          // ERREUR A TESTER
  79  
  80          // INSERER UN RAPPORT COMME QUOI L'ACTION EST ABANDONNEE...
  81          $creation_table=creation_tftp_tables();
  82          if(!$creation_table){
  83              echo "Erreur lors de la création de la table 'se3_tftp_rapports'\n";
  84          }
  85          else{
  86              //$sql="SELECT * FROM se3_tftp_action WHERE id='$id_machine';";
  87              $sql="SELECT * FROM se3_dhcp WHERE id='$id_machine';";
  88              $info_machine=mysql_query($sql);
  89  
  90              if(!$info_machine){
  91                  echo "La machine n°$id_machine n'existe pas dans la table 'se3_dhcp'.\n";
  92  
  93                  # Insérer dans une table rapport
  94                  $sql="INSERT INTO se3_tftp_rapports SET id='$id_machine',
  95                                                          name='',
  96                                                          mac='',
  97                                                          date='".timestamp_to_mysql_date($instant)."',
  98                                                          tache='$nature',
  99                                                          statut='ECHEC',
 100                                                          descriptif='Abandon: date limite de récupération atteinte.';";
 101                  //echo $sql;
 102                  $insert=mysql_query($sql);
 103                  if(!$insert){
 104                      echo "ERREUR sur $sql\n";
 105                  }
 106              }
 107              else{
 108                  $lig_machine=mysql_fetch_object($info_machine);
 109                  $mac_machine=$lig_machine->mac;
 110                  $nom_machine=$lig_machine->name;
 111  
 112                  $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 113  
 114                  // Insérer dans une table rapport
 115                  $sql="INSERT INTO se3_tftp_rapports SET id='$id_machine',
 116                                                          name='$nom_machine',
 117                                                          mac='$mac_machine',
 118                                                          date='".timestamp_to_mysql_date($instant)."',
 119                                                          tache='$nature',
 120                                                          statut='ECHEC',
 121                                                          descriptif='Abandon: date limite de récupération atteinte.';";
 122                  //echo $sql;
 123                  $insert=mysql_query($sql);
 124                  if(!$insert){
 125                      echo "ERREUR sur $sql\n";
 126                  }
 127  
 128                  if($corrige_mac!="") {
 129                      if(file_exists("$tftp_pxelinux_cfg/01-$corrige_mac")) {
 130                          unlink("$tftp_pxelinux_cfg/01-$corrige_mac");
 131                      }
 132                  }
 133              }
 134  
 135              // Supprimer l'entrée dans se3_tftp_action
 136              $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine';";
 137              $nettoyage=mysql_query($sql);
 138              if(!$nettoyage){
 139                  echo "ERREUR lors de la suppression de l'action sur\n   $sql\n";
 140              }
 141          }
 142          exit();
 143      }
 144  
 145      // Le fichier à récupérer diffère d'une action à l'autre:
 146      switch($nature) {
 147          case "restauration":
 148              $url="http://$ip/~hacker/resultat_restauration.txt";
 149              //wget --tries=1 http://$ip/~hacker/resultat_restauration.txt
 150  
 151              if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 152                  if($fl=@file($url)){
 153                      // Terminé... on renseigne une table
 154  
 155                      $statut=trim($fl[0]);
 156                      //if("$statut"=="SUCCES") {
 157  
 158                      $descriptif="";
 159                      for($i=1;$i<count($fl);$i++){
 160                          $descriptif.=preg_replace("/['\"]/","[__]",trim($fl[$i]))."\n";
 161                      }
 162                      $descriptif=trim($descriptif);
 163  
 164                      $creation_table=creation_tftp_tables();
 165                      if(!$creation_table){
 166                          echo "Erreur lors de la création de la table 'se3_tftp_rapports'\n";
 167                      }
 168                      else{
 169                          //$sql="SELECT * FROM se3_tftp_action WHERE id='$id_machine';";
 170                          $sql="SELECT * FROM se3_dhcp WHERE id='$id_machine';";
 171                          $info_machine=mysql_query($sql);
 172  
 173                          if(!$info_machine){
 174                              echo "La machine n°$id_machine n'existe pas dans la table 'se3_dhcp'.\n";
 175                          }
 176                          else{
 177                              $lig_machine=mysql_fetch_object($info_machine);
 178                              $mac_machine=$lig_machine->mac;
 179                              $nom_machine=$lig_machine->name;
 180  
 181                              $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 182  
 183                              # Insérer dans une table rapport
 184                              $sql="INSERT INTO se3_tftp_rapports SET id='$id_machine',
 185                                                                      name='$nom_machine',
 186                                                                      mac='$mac_machine',
 187                                                                      date='".timestamp_to_mysql_date($instant)."',
 188                                                                      tache='$nature',
 189                                                                      statut='$statut',
 190                                                                      descriptif='".addslashes($descriptif)."';";
 191                              //echo $sql;
 192                              $insert=mysql_query($sql);
 193                              if(!$insert){
 194                                  echo "ERREUR sur $sql\n";
 195                              }
 196                              # Insérer dans une table sauvegarde si il s'agit d'une sauvegarde
 197                          }
 198                      }
 199                      // Ménage:
 200                      //rm -f resultat_restauration.txt
 201                      // Celui-là est récupéré où? en /tmp?
 202                      if(file_exists($lanceur_recup)) {
 203                          //unlink($lanceur_recup);
 204                          if(!unlink($lanceur_recup)){
 205                              echo "La suppression de $lanceur_recup a échoué.\n";
 206                          }
 207                      }
 208  
 209                      if($corrige_mac!="") {
 210                          if(file_exists("$tftp_pxelinux_cfg/01-$corrige_mac")) {
 211                              unlink("$tftp_pxelinux_cfg/01-$corrige_mac");
 212                          }
 213                      }
 214  
 215                      // Supprimer l'entrée dans se3_tftp_action
 216                      $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine';";
 217                      $nettoyage=mysql_query($sql);
 218                      if(!$nettoyage){
 219                          echo "ERREUR lors de la suppression de l'action sur\n   $sql\n";
 220                      }
 221                      exit();
 222                  }
 223                  else {
 224                      # On remet à plus tard...
 225                      #at +f 1 minute $0 $*
 226                      //exec("at +f 1 minute $lanceur_recup",$retour);
 227                      //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 228                      @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 229                      # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
 230                      # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
 231  
 232                      // Tester le $retour
 233                      if(count($retour)>0){
 234                          echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
 235                          for($i=0;$i<count($retour);$i++){
 236                              echo "$retour[$i]\n";
 237                          }
 238                      }
 239                  }
 240              }
 241              else {
 242                  # On remet à plus tard...
 243                  #at +f 1 minute $0 $*
 244                  //exec("at +f 1 minute $lanceur_recup",$retour);
 245                  //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 246                  @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 247                  # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
 248                  # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
 249  
 250                  // Tester le $retour
 251                  if(count($retour)>0){
 252                      echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
 253                      for($i=0;$i<count($retour);$i++){
 254                          echo "$retour[$i]\n";
 255                      }
 256                  }
 257              }
 258              break;
 259          case "sauvegarde":
 260              $url="http://$ip/~hacker/resultat_sauvegarde.txt";
 261              //wget --tries=1 http://$ip/~hacker/resultat_restauration.txt
 262  
 263              if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 264                  if($fl=@file($url)){
 265                      // Terminé... on renseigne une table
 266  
 267                      $statut=trim($fl[0]);
 268                      //if("$statut"=="SUCCES") {
 269  
 270                      $descriptif="";
 271                      $partition="";
 272                      $image="";
 273                      for($i=1;$i<count($fl);$i++){
 274                          if(preg_match("/^partition=/",$fl[$i])) {$partition=trim(preg_replace("/^partition=/","",$fl[$i]));}
 275                          if(preg_match("/^image=/",$fl[$i])) {$image=trim(preg_replace("/^image=/","",$fl[$i]));}
 276                          $descriptif.=preg_replace("/['\"]/","[__]",trim($fl[$i]))."\n";
 277                      }
 278                      $descriptif=trim($descriptif);
 279  
 280                      $creation_table=creation_tftp_tables();
 281                      if(!$creation_table){
 282                          echo "Erreur lors de la création de la table 'se3_tftp_rapports'\n";
 283                      }
 284                      else{
 285                          //$sql="SELECT * FROM se3_tftp_action WHERE id='$id_machine';";
 286                          $sql="SELECT * FROM se3_dhcp WHERE id='$id_machine';";
 287                          $info_machine=mysql_query($sql);
 288  
 289                          if(!$info_machine){
 290                              echo "La machine n°$id_machine n'existe pas dans la table 'se3_dhcp'.\n";
 291                          }
 292                          else{
 293                              $lig_machine=mysql_fetch_object($info_machine);
 294                              $mac_machine=$lig_machine->mac;
 295                              $nom_machine=$lig_machine->name;
 296  
 297                              $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 298  
 299                              # Insérer dans une table rapport
 300                              $sql="INSERT INTO se3_tftp_rapports SET id='$id_machine',
 301                                                                      name='$nom_machine',
 302                                                                      mac='$mac_machine',
 303                                                                      date='".timestamp_to_mysql_date($instant)."',
 304                                                                      tache='$nature',
 305                                                                      statut='$statut',
 306                                                                      descriptif='".addslashes($descriptif)."';";
 307                              //echo $sql;
 308                              $insert=mysql_query($sql);
 309                              if(!$insert){
 310                                  echo "ERREUR sur $sql\n";
 311                              }
 312  
 313                              if($statut=="SUCCES"){
 314                                  $url="http://$ip/~hacker/partitionnement.out";
 315                                  //wget --tries=1 http://$ip/~hacker/resultat_restauration.txt
 316  
 317                                  $partitionnement="";
 318                                  if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 319                                      if($fl=@file($url)){
 320                                          for($i=1;$i<count($fl);$i++){
 321                                              $partitionnement.=$fl[$i];
 322                                          }
 323                                          if(addslashes(preg_replace("/['\"]/","[__]",$partitionnement))!=$partitionnement) {
 324                                              echo "$partitionnement\n\n".addslashes(preg_replace("/['\"]/","[__]",$partitionnement))."\n\n";
 325                                              $partitionnement="";
 326                                          }
 327                                      }
 328                                  }
 329  
 330                                  $url="http://$ip/~hacker/df.txt";
 331                                  $df="";
 332                                  if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 333                                      if($fl=@file($url)){
 334                                          $df=$fl[0];
 335                                      }
 336                                  }
 337  
 338                                  # Insérer dans une table sauvegarde si il s'agit d'une sauvegarde
 339                                  $creation_table=creation_tftp_tables();
 340                                  if(!$creation_table){
 341                                      echo "Erreur lors de la création de la table 'se3_tftp_sauvegardes'\n";
 342                                  }
 343                                  else{
 344                                      $sql="INSERT INTO se3_tftp_sauvegardes SET id='$id_machine',
 345                                                                      name='$nom_machine',
 346                                                                      mac='$mac_machine',
 347                                                                      partition='$partition',
 348                                                                      image='$image',
 349                                                                      date='".timestamp_to_mysql_date($instant)."',
 350                                                                      descriptif='".addslashes($descriptif)."',
 351                                                                      df='$df',
 352                                                                      partitionnement='".addslashes($partitionnement)."';";
 353                                      $insert=mysql_query($sql);
 354                                      if(!$insert){
 355                                          echo "ERREUR sur $sql\n";
 356                                      }
 357                                  }
 358  
 359  
 360                              }
 361                          }
 362                      }
 363                      // Ménage:
 364                      //rm -f resultat_restauration.txt
 365                      // Celui-là est récupéré où? en /tmp?
 366                      if(file_exists($lanceur_recup)) {
 367                          //unlink($lanceur_recup);
 368                          if(!unlink($lanceur_recup)){
 369                              echo "La suppression de $lanceur_recup a échoué.\n";
 370                          }
 371                      }
 372  
 373                      if($corrige_mac!="") {
 374                          if(file_exists("$tftp_pxelinux_cfg/01-$corrige_mac")) {
 375                              unlink("$tftp_pxelinux_cfg/01-$corrige_mac");
 376                          }
 377                      }
 378  
 379                      // Supprimer l'entrée dans se3_tftp_action
 380                      $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine';";
 381                      $nettoyage=mysql_query($sql);
 382                      if(!$nettoyage){
 383                          echo "ERREUR lors de la suppression de l'action sur\n   $sql\n";
 384                      }
 385                      exit();
 386                  }
 387                  else {
 388                      # On remet à plus tard...
 389                      #at +f 1 minute $0 $*
 390                      //exec("at +f 1 minute $lanceur_recup",$retour);
 391                      //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 392                      @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 393                      # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
 394                      # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
 395  
 396                      // Tester le $retour
 397                      if(count($retour)>0){
 398                          echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
 399                          for($i=0;$i<count($retour);$i++){
 400                              echo "$retour[$i]\n";
 401                          }
 402                      }
 403                  }
 404              }
 405              else {
 406                  # On remet à plus tard...
 407                  #at +f 1 minute $0 $*
 408                  //exec("at +f 1 minute $lanceur_recup",$retour);
 409                  //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 410                  @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 411                  # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
 412                  # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
 413  
 414                  // Tester le $retour
 415                  if(count($retour)>0){
 416                      echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
 417                      for($i=0;$i<count($retour);$i++){
 418                          echo "$retour[$i]\n";
 419                      }
 420                  }
 421              }
 422              break;
 423          case "rapport":
 424              //echo "recup_rapport.sh: rapport: A FAIRE";
 425              /*
 426              /home/hacker/Public/modules.txt
 427              /home/hacker/Public/lsmod.txt
 428  
 429              tar -czf disques.tar.gz disk_*.out disk_*.fdisk
 430              disk_${A}.out
 431              disk_${A}.fdisk
 432              # à inscrire dans la table se3_tftp_sauvegardes
 433  
 434              tar -czf sauvegardes.tar.gz sauvegardes_*.txt
 435              sauvegardes_${B}.txt
 436              sauvegardes_${B}_details.txt
 437              # à inscrire dans la table se3_tftp_sauvegardes
 438  
 439              tar -czf df.tar.gz df_*.txt
 440              */
 441  
 442              $url="http://$ip/~hacker/lsmod.txt";
 443              //wget --tries=1 http://$ip/~hacker/lsmod.txt
 444  
 445              if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 446                  if($fl=@file($url)){
 447                      // Terminé... on renseigne une table
 448  
 449                      fich_log_debug("Le lsmod.txt a été trouvé.\n");
 450  
 451                      // Le rapport a été généré.
 452                      // On va tester l'existence des fichiers...
 453                      $tab_fich=array("hda","hdb","hdc","hdd","sda","sdb","sdc","sdd");
 454  
 455                      // Variable destinée à contenir les disk_*.out correspondant aux tables de partitions des disques de la machine
 456                      $partitionnement="";
 457                      // CE PARTITIONNEMENT DEVRAIT ETRE DANS LA BOUCLE for($i=0;$i<count($tab_fich);$i++) {
 458                      // SI PLUSIEURS DISQUES DURS SONT PARCOURUS...
 459                      // ... mais les insertions dans les tables devraient aussi en tenir compte...
 460                      // POUR QUE L'EXPLOITATION DANS UNE PAGE WEB SOIT POSSIBLE, IL FAUDRAIT AJOUTER DES CHAMPS SEPARES POUR LE df, LE PARTITIONNEMENT DANS se3_tftp_rapports
 461                      $infos="";
 462                      $sauvegardes=array();
 463                      $cpt=0;
 464                      for($i=0;$i<count($tab_fich);$i++) {
 465                          unset($tab_part);
 466                          $tab_part=array();
 467  
 468                          $url="http://$ip/~hacker/disk_".$tab_fich[$i].".out";
 469                          unset($fl2);
 470                          if($fl2=@file($url)){
 471                              fich_log_debug("Le fichier disk_".$tab_fich[$i].".out a été trouvé.\n");
 472  
 473                              if($i>0) {
 474                                  $partitionnement.="___+*+___";
 475                                  //$partitionnement.="___+-+___";
 476                              }
 477                              for($j=0;$j<count($fl2);$j++){
 478                                  $partitionnement.=$fl2[$j];
 479                                  if(preg_match("|^/dev/".$tab_fich[$i]."|",$fl2[$j])) {
 480                                      fich_log_debug("Lecture de la ligne $j:\n   $fl2[$j]\ndu sfdisk.out de /dev/$tab_fich[$i] dans le $url\n");
 481                                      unset($tab_tmp);
 482                                      $tab_tmp=explode(" ",$fl2[$j]);
 483                                      for($m=0;$m<count($tab_tmp);$m++) {
 484                                          fich_log_debug("\$tab_tmp[$m]=$tab_tmp[$m]\n");
 485                                      }
 486                                      //$tab_part[]=preg_match("/^/dev//",$tab_tmp[0]);
 487                                      //$tab_part[]=preg_replace("/^/dev//","",$tab_tmp[0]);
 488                                      //$tab_part[]=preg_replace("|^/dev/|","",$tab_tmp[0]);
 489                                      $tab_part[]=mb_ereg_replace("^/dev/","",$tab_tmp[0]);
 490                                      //fich_log_debug("Ajout de la partition: '".preg_replace("/^/dev//","",$tab_tmp[0])."\n");
 491                                      //fich_log_debug("Ajout de la partition: '".preg_replace("|^/dev/|","",$tab_tmp[0])."\n");
 492                                      fich_log_debug("Ajout de la partition: '".mb_ereg_replace("^/dev/","",$tab_tmp[0])."\n");
 493  
 494                                      //$url="http://$ip/~hacker/df_".preg_replace("/^/dev//","",$tab_tmp[0]).".txt";
 495                                      //$url="http://$ip/~hacker/df_".preg_replace("|^/dev/|","",$tab_tmp[0]).".txt";
 496                                      $url="http://$ip/~hacker/df_".mb_ereg_replace("^/dev/","",$tab_tmp[0]).".txt";
 497                                      fich_log_debug("Recherche de $url\n");
 498                                      unset($fl4);
 499                                      if($fl4=@file($url)) {
 500                                          //fich_log_debug("df_".preg_replace("/^/dev//","",$tab_tmp[0]).".txt trouvé.\n");
 501                                          //fich_log_debug("df_".preg_replace("|^/dev/|","",$tab_tmp[0]).".txt trouvé.\n");
 502                                          fich_log_debug("df_".mb_ereg_replace("^/dev/","",$tab_tmp[0]).".txt trouvé.\n");
 503                                          for($m=0;$m<count($fl4);$m++){
 504                                              $infos.=$fl4[$m];
 505                                          }
 506                                      }
 507                                  }
 508                              }
 509                              if(addslashes(preg_replace("/['\"]/","[__]",$partitionnement))!=$partitionnement) {
 510                                  echo "$partitionnement\n\n".addslashes(preg_replace("/['\"]/","[__]",$partitionnement))."\n\n";
 511                                  $partitionnement="";
 512                              }
 513                          }
 514  
 515                          fich_log_debug("\n\$partitionnement=$partitionnement\n");
 516  
 517  
 518                          // Traitement des fichiers de sauvegarde trouvés pour renseigner la table se3_tftp_sauvegardes
 519                          for($k=0;$k<count($tab_part);$k++) {
 520                              fich_log_debug("Test de \$tab_part[$k]=".$tab_part[$k]."\n");
 521  
 522                              $url="http://$ip/~hacker/sauvegardes_".$tab_part[$k].".txt";
 523                              unset($fl2);
 524                              if($fl2=@file($url)){
 525                                  fich_log_debug("sauvegardes_".$tab_part[$k].".txt trouvé.\n");
 526  
 527                                  $url="http://$ip/~hacker/sauvegardes_".$tab_part[$k]."_details.txt";
 528                                  unset($fl3);
 529                                  $fl3=@file($url);
 530  
 531                                  $url="http://$ip/~hacker/df_".$tab_part[$k].".txt";
 532                                  unset($fl4);
 533                                  $fl4=@file($url);
 534  
 535                                  for($j=0;$j<count($fl2);$j++){
 536                                      $sauvegardes[$cpt]=array();
 537                                      // $tab_part[$k] est la partition de stockage, pas la partition sauvegardée
 538                                      //$sauvegardes[$cpt]['partition']=$tab_part[$k];
 539                                      $sauvegardes[$cpt]['partition']="";
 540                                      $sauvegardes[$cpt]['chemin']=trim($fl2[$j]);
 541                                      $sauvegardes[$cpt]['details']="";
 542                                      $sauvegardes[$cpt]['df']="";
 543  
 544                                      fich_log_debug("\$sauvegardes[$cpt]['chemin']=".$sauvegardes[$cpt]['chemin']."\n");
 545  
 546                                      if($fl3) {
 547                                          fich_log_debug("sauvegardes_".$tab_part[$k]."_details.txt trouvé.\n");
 548                                          $temoin1="n";
 549                                          for($m=0;$m<count($fl3);$m++){
 550                                              //if(preg_match("/Infos sur /i".$sauvegardes[$cpt]['chemin'],$fl3[$m])) {$temoin1="y";}
 551                                              if(preg_match("|Infos sur ".$sauvegardes[$cpt]['chemin']."|i",$fl3[$m])) {$temoin1="y";}
 552                                              //if(preg_match("/___+\*+___/",trim($fl3[$m]))) {$temoin1="n";echo "TRUC";}
 553                                              //if(preg_match("/^___+/",trim($fl3[$m]))) {$temoin1="n";}
 554                                              if(preg_match("/^___\+\*\+___$/",trim($fl3[$m]))) {$temoin1="n";}
 555                                              if($temoin1=="y") {
 556                                                  $sauvegardes[$cpt]['details'].=$fl3[$m];
 557                                              }
 558  
 559                                              if(preg_match("/^partition=/",$fl3[$m])) {
 560                                                  $sauvegardes[$cpt]['partition']=preg_replace("/^partition=/","",$fl3[$m]);
 561                                              }
 562                                          }
 563                                      }
 564  
 565                                      if($fl4) {
 566                                          fich_log_debug("df_".$tab_part[$k].".txt trouvé.\n");
 567                                          for($m=0;$m<count($fl4);$m++){
 568                                              $sauvegardes[$cpt]['df'].=$fl4[$m];
 569                                          }
 570                                      }
 571  
 572                                      $cpt++;
 573                                  }
 574                              }
 575                          }
 576                      }
 577  
 578                      //========================================
 579                      $network_driver=array();
 580                      $url="http://$ip/~hacker/network_driver.txt";
 581                      unset($fl5);
 582                      if($fl5=@file($url)){
 583                          for($m=0;$m<count($fl5);$m++){
 584                              $network_driver[]=$fl5[$m];
 585                              fich_log_debug("network_driver[$m]=".$fl5[$m]."\n");
 586                          }
 587                      }
 588  
 589                      $storage_driver=array();
 590                      $url="http://$ip/~hacker/storage_driver.txt";
 591                      unset($fl6);
 592                      if($fl6=@file($url)){
 593                          for($m=0;$m<count($fl6);$m++){
 594                              $storage_driver[]=$fl6[$m];
 595                              fich_log_debug("storage_driver[$m]=".$fl6[$m]."\n");
 596                          }
 597                      }
 598                      //========================================
 599  
 600                      // Insertion dans les tables
 601  
 602                      $creation_table=creation_tftp_tables();
 603                      if(!$creation_table){
 604                          echo "Erreur lors de la création de la table 'se3_tftp_rapports'\n";
 605                      }
 606                      else{
 607                          //$sql="SELECT * FROM se3_tftp_action WHERE id='$id_machine';";
 608                          $sql="SELECT * FROM se3_dhcp WHERE id='$id_machine';";
 609                          $info_machine=mysql_query($sql);
 610  
 611                          if(!$info_machine){
 612                              echo "La machine n°$id_machine n'existe pas dans la table 'se3_dhcp'.\n";
 613                          }
 614                          else{
 615                              $lig_machine=mysql_fetch_object($info_machine);
 616                              $mac_machine=$lig_machine->mac;
 617                              $nom_machine=$lig_machine->name;
 618  
 619                              $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 620  
 621                              $statut="SUCCES";
 622                              $descriptif=$partitionnement;
 623                              //if($descriptif!="") {$descriptif.="\n";}
 624                              if($descriptif!="") {
 625                                  $descriptif.="\n";
 626                              }
 627                              $descriptif.="___FIN_PARTITIONNEMENT___";
 628                              $descriptif.="\n";
 629  
 630                              $descriptif.=$infos;
 631                              if($infos!="") {
 632                                  $descriptif.="\n";
 633                              }
 634                              $descriptif.="___FIN_INFOS_DF___";
 635                              $descriptif.="\n";
 636  
 637                              if(count($sauvegardes)>0) {
 638                                  if($descriptif!="") {$descriptif.="\n";}
 639                                  for($i=0;$i<count($sauvegardes);$i++) {
 640                                      $descriptif.=$sauvegardes[$i]['chemin']."\n";
 641                                      if($sauvegardes[$i]['details']!="") {
 642                                          $descriptif.=$sauvegardes[$i]['details']."\n";
 643                                      }
 644                                      /*
 645                                      // Là, on insère le volume dispo autant de fois qu'il y a de sauvegarde, alors que le df est inséré une fois après les infos sur le partitionnement.
 646                                      if($sauvegardes[$i]['df']!="") {
 647                                          $descriptif.=$sauvegardes[$i]['df']."\n";
 648                                      }
 649                                      */
 650                                  }
 651                              }
 652  
 653                              # Insérer dans une table rapport
 654                              $sql="INSERT INTO se3_tftp_rapports SET id='$id_machine',
 655                                                                      name='$nom_machine',
 656                                                                      mac='$mac_machine',
 657                                                                      date='".timestamp_to_mysql_date($instant)."',
 658                                                                      tache='$nature',
 659                                                                      statut='$statut',
 660                                                                      descriptif='".addslashes($descriptif)."';";
 661                              //echo $sql;
 662                              $insert=mysql_query($sql);
 663                              if(!$insert){
 664                                  echo "ERREUR sur $sql\n";
 665                              }
 666  
 667                              //========================================
 668                              $sql="DELETE FROM se3_tftp_infos WHERE id='$id_machine';";
 669                              //echo $sql;
 670                              $delete=mysql_query($sql);
 671                              if(!$delete){
 672                                  echo "ERREUR sur $sql\n";
 673                              }
 674                              for($i=0;$i<count($network_driver);$i++) {
 675                                  $sql="INSERT INTO se3_tftp_infos SET id='$id_machine',
 676                                                                  name='$nom_machine',
 677                                                                  mac='$mac_machine',
 678                                                                  nom='network_driver',
 679                                                                  valeur='".trim(addslashes($network_driver[$i]))."';";
 680                                  $insert=mysql_query($sql);
 681                                  if(!$insert){
 682                                      echo "ERREUR sur $sql\n";
 683                                  }
 684                              }
 685                              for($i=0;$i<count($storage_driver);$i++) {
 686                                  $sql="INSERT INTO se3_tftp_infos SET id='$id_machine',
 687                                                                  name='$nom_machine',
 688                                                                  mac='$mac_machine',
 689                                                                  nom='storage_driver',
 690                                                                  valeur='".trim(addslashes($storage_driver[$i]))."';";
 691                                  $insert=mysql_query($sql);
 692                                  if(!$insert){
 693                                      echo "ERREUR sur $sql\n";
 694                                  }
 695                              }
 696                              //========================================
 697  
 698  
 699                              if(count($sauvegardes)>0) {
 700                                  $creation_table=creation_tftp_tables();
 701                                  if(!$creation_table){
 702                                      echo "Erreur lors de la création de la table 'se3_tftp_sauvegardes'\n";
 703                                  }
 704                                  else{
 705                                      for($i=0;$i<count($sauvegardes);$i++) {
 706                                          $sql="INSERT INTO se3_tftp_sauvegardes SET id='$id_machine',
 707                                                                          name='$nom_machine',
 708                                                                          mac='$mac_machine',
 709                                                                          partition='".$sauvegardes[$i]['partition']."',
 710                                                                          image='".$sauvegardes[$i]['chemin']."',
 711                                                                          date='".timestamp_to_mysql_date($instant)."',
 712                                                                          descriptif='".addslashes($sauvegardes[$i]['details'])."',
 713                                                                          df='".$sauvegardes[$i]['df']."',
 714                                                                          partitionnement='".addslashes($partitionnement)."';";
 715  
 716                                          $insert=mysql_query($sql);
 717                                          if(!$insert){
 718                                              echo "ERREUR sur $sql\n";
 719                                          }
 720                                      }
 721                                  }
 722                              }
 723                          }
 724                      }
 725                      // Ménage:
 726                      //rm -f resultat_restauration.txt
 727                      // Celui-là est récupéré où? en /tmp?
 728                      if(file_exists($lanceur_recup)) {
 729                          //unlink($lanceur_recup);
 730                          if(!unlink($lanceur_recup)){
 731                              echo "La suppression de $lanceur_recup a échoué.\n";
 732                          }
 733                      }
 734  
 735                      if($corrige_mac!="") {
 736                          if(file_exists("$tftp_pxelinux_cfg/01-$corrige_mac")) {
 737                              unlink("$tftp_pxelinux_cfg/01-$corrige_mac");
 738                          }
 739                      }
 740  
 741                      // Supprimer l'entrée dans se3_tftp_action
 742                      $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine';";
 743                      $nettoyage=mysql_query($sql);
 744                      if(!$nettoyage){
 745                          echo "ERREUR lors de la suppression de l'action sur\n   $sql\n";
 746                      }
 747                      exit();
 748                  }
 749                  else {
 750                      # On remet à plus tard...
 751                      #at +f 1 minute $0 $*
 752                      //exec("at +f 1 minute $lanceur_recup",$retour);
 753                      //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 754                      @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 755                      # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
 756                      # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
 757  
 758                      // Tester le $retour
 759                      if(count($retour)>0){
 760                          echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
 761                          for($i=0;$i<count($retour);$i++){
 762                              echo "$retour[$i]\n";
 763                          }
 764                      }
 765                  }
 766              }
 767              else {
 768                  # On remet à plus tard...
 769                  #at +f 1 minute $0 $*
 770                  //exec("at +f 1 minute $lanceur_recup",$retour);
 771                  //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 772                  @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 773                  # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
 774                  # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
 775  
 776                  // Tester le $retour
 777                  if(count($retour)>0){
 778                      echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
 779                      for($i=0;$i<count($retour);$i++){
 780                          echo "$retour[$i]\n";
 781                      }
 782                  }
 783              }
 784  
 785              break;
 786      //======================================================================================
 787          case "restauration_sysresccd":
 788              $url="http://$ip/resultat_restauration.txt";
 789              //wget --tries=1 http://$ip/~hacker/resultat_restauration.txt
 790  
 791              if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 792                  if($fl=@file($url)){
 793                      // Terminé... on renseigne une table
 794  
 795                      $statut=trim($fl[0]);
 796                      //if("$statut"=="SUCCES") {
 797  
 798                      $descriptif="";
 799                      for($i=1;$i<count($fl);$i++){
 800                          $descriptif.=preg_replace("/['\"]/","[__]",trim($fl[$i]))."\n";
 801                      }
 802                      $descriptif=trim($descriptif);
 803  
 804                      $creation_table=creation_tftp_tables();
 805                      if(!$creation_table){
 806                          echo "Erreur lors de la création de la table 'se3_tftp_rapports'\n";
 807                      }
 808                      else{
 809                          //$sql="SELECT * FROM se3_tftp_action WHERE id='$id_machine';";
 810                          $sql="SELECT * FROM se3_dhcp WHERE id='$id_machine';";
 811                          $info_machine=mysql_query($sql);
 812  
 813                          if(!$info_machine){
 814                              echo "La machine n°$id_machine n'existe pas dans la table 'se3_dhcp'.\n";
 815                          }
 816                          else{
 817                              $lig_machine=mysql_fetch_object($info_machine);
 818                              $mac_machine=$lig_machine->mac;
 819                              $nom_machine=$lig_machine->name;
 820  
 821                              $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 822  
 823                              # Insérer dans une table rapport
 824                              $sql="INSERT INTO se3_tftp_rapports SET id='$id_machine',
 825                                                                      name='$nom_machine',
 826                                                                      mac='$mac_machine',
 827                                                                      date='".timestamp_to_mysql_date($instant)."',
 828                                                                      tache='$nature',
 829                                                                      statut='$statut',
 830                                                                      descriptif='".addslashes($descriptif)."';";
 831                              //echo $sql;
 832                              $insert=mysql_query($sql);
 833                              if(!$insert){
 834                                  echo "ERREUR sur $sql\n";
 835                              }
 836                              # Insérer dans une table sauvegarde si il s'agit d'une sauvegarde
 837                          }
 838                      }
 839                      // Ménage:
 840                      //rm -f resultat_restauration.txt
 841                      // Celui-là est récupéré où? en /tmp?
 842                      if(file_exists($lanceur_recup)) {
 843                          //unlink($lanceur_recup);
 844                          if(!unlink($lanceur_recup)){
 845                              echo "La suppression de $lanceur_recup a échoué.\n";
 846                          }
 847                      }
 848  
 849                      if($corrige_mac!="") {
 850                          if(file_exists("$tftp_pxelinux_cfg/01-$corrige_mac")) {
 851                              unlink("$tftp_pxelinux_cfg/01-$corrige_mac");
 852                          }
 853                      }
 854  
 855                      // Supprimer l'entrée dans se3_tftp_action
 856                      $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine';";
 857                      $nettoyage=mysql_query($sql);
 858                      if(!$nettoyage){
 859                          echo "ERREUR lors de la suppression de l'action sur\n   $sql\n";
 860                      }
 861                      exit();
 862                  }
 863                  else {
 864                      # On remet à plus tard...
 865                      #at +f 1 minute $0 $*
 866                      //exec("at +f 1 minute $lanceur_recup",$retour);
 867                      //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 868                      @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 869                      # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
 870                      # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
 871  
 872                      // Tester le $retour
 873                      if(count($retour)>0){
 874                          echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
 875                          for($i=0;$i<count($retour);$i++){
 876                              echo "$retour[$i]\n";
 877                          }
 878                      }
 879                  }
 880              }
 881              else {
 882                  # On remet à plus tard...
 883                  #at +f 1 minute $0 $*
 884                  //exec("at +f 1 minute $lanceur_recup",$retour);
 885                  //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 886                  @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 887                  # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
 888                  # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
 889  
 890                  // Tester le $retour
 891                  if(count($retour)>0){
 892                      echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
 893                      for($i=0;$i<count($retour);$i++){
 894                          echo "$retour[$i]\n";
 895                      }
 896                  }
 897              }
 898              break;
 899          case "sauvegarde_sysresccd":
 900              $url="http://$ip/resultat_sauvegarde.txt";
 901              //wget --tries=1 http://$ip/~hacker/resultat_restauration.txt
 902  
 903              if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 904                  if($fl=@file($url)){
 905                      // Terminé... on renseigne une table
 906  
 907                      $statut=trim($fl[0]);
 908                      //if("$statut"=="SUCCES") {
 909  
 910                      $descriptif="";
 911                      $partition="";
 912                      $image="";
 913                      for($i=1;$i<count($fl);$i++){
 914                          if(preg_match("/^partition=/",$fl[$i])) {$partition=trim(preg_replace("/^partition=/","",$fl[$i]));}
 915                          if(preg_match("/^image=/",$fl[$i])) {$image=trim(preg_replace("/^image=/","",$fl[$i]));}
 916                          $descriptif.=preg_replace("/['\"]/","[__]",trim($fl[$i]))."\n";
 917                      }
 918                      $descriptif=trim($descriptif);
 919  
 920                      $creation_table=creation_tftp_tables();
 921                      if(!$creation_table){
 922                          echo "Erreur lors de la création de la table 'se3_tftp_rapports'\n";
 923                      }
 924                      else{
 925                          //$sql="SELECT * FROM se3_tftp_action WHERE id='$id_machine';";
 926                          $sql="SELECT * FROM se3_dhcp WHERE id='$id_machine';";
 927                          $info_machine=mysql_query($sql);
 928  
 929                          if(!$info_machine){
 930                              echo "La machine n°$id_machine n'existe pas dans la table 'se3_dhcp'.\n";
 931                          }
 932                          else{
 933                              $lig_machine=mysql_fetch_object($info_machine);
 934                              $mac_machine=$lig_machine->mac;
 935                              $nom_machine=$lig_machine->name;
 936  
 937                              $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 938  
 939                              # Insérer dans une table rapport
 940                              $sql="INSERT INTO se3_tftp_rapports SET id='$id_machine',
 941                                                                      name='$nom_machine',
 942                                                                      mac='$mac_machine',
 943                                                                      date='".timestamp_to_mysql_date($instant)."',
 944                                                                      tache='$nature',
 945                                                                      statut='$statut',
 946                                                                      descriptif='".addslashes($descriptif)."';";
 947                              //echo $sql;
 948                              $insert=mysql_query($sql);
 949                              if(!$insert){
 950                                  echo "ERREUR sur $sql\n";
 951                              }
 952  
 953                              if($statut=="SUCCES"){
 954                                  //$url="http://$ip/~hacker/partitionnement.out";
 955                                  $url="http://$ip/partitionnement.out";
 956                                  //wget --tries=1 http://$ip/~hacker/resultat_restauration.txt
 957  
 958                                  $partitionnement="";
 959                                  if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 960                                      if($fl=@file($url)){
 961                                          for($i=1;$i<count($fl);$i++){
 962                                              $partitionnement.=$fl[$i];
 963                                          }
 964                                          if(addslashes(preg_replace("/['\"]/","[__]",$partitionnement))!=$partitionnement) {
 965                                              echo "$partitionnement\n\n".addslashes(preg_replace("/['\"]/","[__]",$partitionnement))."\n\n";
 966                                              $partitionnement="";
 967                                          }
 968                                      }
 969                                  }
 970  
 971                                  //$url="http://$ip/~hacker/df.txt";
 972                                  $url="http://$ip/df.txt";
 973                                  $df="";
 974                                  if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
 975                                      if($fl=@file($url)){
 976                                          $df=$fl[0];
 977                                      }
 978                                  }
 979  
 980                                  # Insérer dans une table sauvegarde si il s'agit d'une sauvegarde
 981                                  $creation_table=creation_tftp_tables();
 982                                  if(!$creation_table){
 983                                      echo "Erreur lors de la création de la table 'se3_tftp_sauvegardes'\n";
 984                                  }
 985                                  else{
 986                                      $sql="INSERT INTO se3_tftp_sauvegardes SET id='$id_machine',
 987                                                                      name='$nom_machine',
 988                                                                      mac='$mac_machine',
 989                                                                      partition='$partition',
 990                                                                      image='$image',
 991                                                                      date='".timestamp_to_mysql_date($instant)."',
 992                                                                      descriptif='".addslashes($descriptif)."',
 993                                                                      df='$df',
 994                                                                      partitionnement='".addslashes($partitionnement)."';";
 995                                      $insert=mysql_query($sql);
 996                                      if(!$insert){
 997                                          echo "ERREUR sur $sql\n";
 998                                      }
 999                                  }
1000  
1001  
1002                              }
1003                          }
1004                      }
1005                      // Ménage:
1006                      //rm -f resultat_restauration.txt
1007                      // Celui-là est récupéré où? en /tmp?
1008                      if(file_exists($lanceur_recup)) {
1009                          //unlink($lanceur_recup);
1010                          if(!unlink($lanceur_recup)){
1011                              echo "La suppression de $lanceur_recup a échoué.\n";
1012                          }
1013                      }
1014  
1015                      if($corrige_mac!="") {
1016                          if(file_exists("$tftp_pxelinux_cfg/01-$corrige_mac")) {
1017                              unlink("$tftp_pxelinux_cfg/01-$corrige_mac");
1018                          }
1019                      }
1020  
1021                      // Supprimer l'entrée dans se3_tftp_action
1022                      $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine';";
1023                      $nettoyage=mysql_query($sql);
1024                      if(!$nettoyage){
1025                          echo "ERREUR lors de la suppression de l'action sur\n   $sql\n";
1026                      }
1027                      exit();
1028                  }
1029                  else {
1030                      # On remet à plus tard...
1031                      #at +f 1 minute $0 $*
1032                      //exec("at +f 1 minute $lanceur_recup",$retour);
1033                      //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
1034                      @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
1035                      # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
1036                      # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
1037  
1038                      // Tester le $retour
1039                      if(count($retour)>0){
1040                          echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
1041                          for($i=0;$i<count($retour);$i++){
1042                              echo "$retour[$i]\n";
1043                          }
1044                      }
1045                  }
1046              }
1047              else {
1048                  # On remet à plus tard...
1049                  #at +f 1 minute $0 $*
1050                  //exec("at +f 1 minute $lanceur_recup",$retour);
1051                  //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
1052                  @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
1053                  # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
1054                  # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
1055  
1056                  // Tester le $retour
1057                  if(count($retour)>0){
1058                      echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
1059                      for($i=0;$i<count($retour);$i++){
1060                          echo "$retour[$i]\n";
1061                      }
1062                  }
1063              }
1064              break;
1065          case "rapport_sysresccd":
1066              //echo "recup_rapport.sh: rapport: A FAIRE";
1067              /*
1068              /home/hacker/Public/modules.txt
1069              /home/hacker/Public/lsmod.txt
1070  
1071              tar -czf disques.tar.gz disk_*.out disk_*.fdisk
1072              disk_${A}.out
1073              disk_${A}.fdisk
1074              # à inscrire dans la table se3_tftp_sauvegardes
1075  
1076              tar -czf sauvegardes.tar.gz sauvegardes_*.txt
1077              sauvegardes_${B}.txt
1078              sauvegardes_${B}_details.txt
1079              # à inscrire dans la table se3_tftp_sauvegardes
1080  
1081              tar -czf df.tar.gz df_*.txt
1082              */
1083  
1084              $url="http://$ip/lsmod.txt";
1085              //wget --tries=1 http://$ip/~hacker/lsmod.txt
1086  
1087              if(@exec("ping ".$ip." -c 1 -w 1 | grep received | awk '{print $4}'")) {
1088                  if($fl=@file($url)){
1089                      // Terminé... on renseigne une table
1090  
1091                      fich_log_debug("Le lsmod.txt a été trouvé.\n");
1092  
1093                      // Le rapport a été généré.
1094                      // On va tester l'existence des fichiers...
1095                      $tab_fich=array("hda","hdb","hdc","hdd","sda","sdb","sdc","sdd");
1096  
1097                      // Variable destinée à contenir les disk_*.out correspondant aux tables de partitions des disques de la machine
1098                      $partitionnement="";
1099                      // CE PARTITIONNEMENT DEVRAIT ETRE DANS LA BOUCLE for($i=0;$i<count($tab_fich);$i++) {
1100                      // SI PLUSIEURS DISQUES DURS SONT PARCOURUS...
1101                      // ... mais les insertions dans les tables devraient aussi en tenir compte...
1102                      // POUR QUE L'EXPLOITATION DANS UNE PAGE WEB SOIT POSSIBLE, IL FAUDRAIT AJOUTER DES CHAMPS SEPARES POUR LE df, LE PARTITIONNEMENT DANS se3_tftp_rapports
1103                      $infos="";
1104                      $sauvegardes=array();
1105                      $cpt=0;
1106                      for($i=0;$i<count($tab_fich);$i++) {
1107                          unset($tab_part);
1108                          $tab_part=array();
1109  
1110                          //$url="http://$ip/~hacker/disk_".$tab_fich[$i].".out";
1111                          $url="http://$ip/disk_".$tab_fich[$i].".out";
1112                          unset($fl2);
1113                          if($fl2=@file($url)){
1114                              fich_log_debug("Le fichier disk_".$tab_fich[$i].".out a été trouvé.\n");
1115  
1116                              if($i>0) {
1117                                  $partitionnement.="___+*+___";
1118                                  //$partitionnement.="___+-+___";
1119                              }
1120                              for($j=0;$j<count($fl2);$j++){
1121                                  $partitionnement.=$fl2[$j];
1122                                  //if(preg_match("/^/dev//".$tab_fich[$i],$fl2[$j])) {
1123                                  //if(preg_match("|^/dev/|".$tab_fich[$i],$fl2[$j])) {
1124                                  if(mb_ereg("^/dev/".$tab_fich[$i],$fl2[$j])) {
1125                                      fich_log_debug("Lecture de la ligne $j:\n   $fl2[$j]\ndu sfdisk.out de /dev/$tab_fich[$i] dans le $url\n");
1126                                      unset($tab_tmp);
1127                                      $tab_tmp=explode(" ",$fl2[$j]);
1128                                      for($m=0;$m<count($tab_tmp);$m++) {
1129                                          fich_log_debug("\$tab_tmp[$m]=$tab_tmp[$m]\n");
1130                                      }
1131                                      //$tab_part[]=preg_match("/^/dev//",$tab_tmp[0]);
1132                                      //$tab_part[]=preg_replace("|^/dev/|","",$tab_tmp[0]);
1133                                      $tab_part[]=mb_ereg_replace("^/dev/","",$tab_tmp[0]);
1134                                      //fich_log_debug("Ajout de la partition: '".preg_replace("/^/dev//","",$tab_tmp[0])."\n");
1135                                      //fich_log_debug("Ajout de la partition: '".preg_replace("|^/dev/|","",$tab_tmp[0])."\n");
1136                                      fich_log_debug("Ajout de la partition: '".mb_ereg_replace("^/dev/","",$tab_tmp[0])."\n");
1137  
1138                                      //$url="http://$ip/~hacker/df_".preg_replace("/^/dev//","",$tab_tmp[0]).".txt";
1139                                      //$url="http://$ip/df_".preg_replace("/^/dev//","",$tab_tmp[0]).".txt";
1140                                      //$url="http://$ip/df_".preg_replace("|^/dev/|","",$tab_tmp[0]).".txt";
1141                                      $url="http://$ip/df_".mb_ereg_replace("^/dev/","",$tab_tmp[0]).".txt";
1142                                      fich_log_debug("Recherche de $url\n");
1143                                      unset($fl4);
1144                                      if($fl4=@file($url)) {
1145                                          //fich_log_debug("df_".preg_replace("/^/dev//","",$tab_tmp[0]).".txt trouvé.\n");
1146                                          //fich_log_debug("df_".preg_replace("|^/dev/|","",$tab_tmp[0]).".txt trouvé.\n");
1147                                          fich_log_debug("df_".mb_ereg_replace("^/dev/","",$tab_tmp[0]).".txt trouvé.\n");
1148                                          for($m=0;$m<count($fl4);$m++){
1149                                              $infos.=$fl4[$m];
1150                                          }
1151                                      }
1152                                  }
1153                              }
1154                              if(addslashes(preg_replace("/['\"]/","[__]",$partitionnement))!=$partitionnement) {
1155                                  echo "$partitionnement\n\n".addslashes(preg_replace("/['\"]/","[__]",$partitionnement))."\n\n";
1156                                  $partitionnement="";
1157                              }
1158                          }
1159  
1160                          fich_log_debug("\n\$partitionnement=$partitionnement\n");
1161  
1162  
1163                          // Traitement des fichiers de sauvegarde trouvés pour renseigner la table se3_tftp_sauvegardes
1164                          for($k=0;$k<count($tab_part);$k++) {
1165                              fich_log_debug("Test de \$tab_part[$k]=".$tab_part[$k]."\n");
1166  
1167                              //$url="http://$ip/~hacker/sauvegardes_".$tab_part[$k].".txt";
1168                              $url="http://$ip/sauvegardes_".$tab_part[$k].".txt";
1169                              unset($fl2);
1170                              if($fl2=@file($url)){
1171                                  fich_log_debug("sauvegardes_".$tab_part[$k].".txt trouvé.\n");
1172  
1173                                  //$url="http://$ip/~hacker/sauvegardes_".$tab_part[$k]."_details.txt";
1174                                  $url="http://$ip/sauvegardes_".$tab_part[$k]."_details.txt";
1175                                  unset($fl3);
1176                                  $fl3=@file($url);
1177  
1178                                  //$url="http://$ip/~hacker/df_".$tab_part[$k].".txt";
1179                                  $url="http://$ip/df_".$tab_part[$k].".txt";
1180                                  unset($fl4);
1181                                  $fl4=@file($url);
1182  
1183                                  for($j=0;$j<count($fl2);$j++){
1184                                      $sauvegardes[$cpt]=array();
1185                                      // $tab_part[$k] est la partition de stockage, pas la partition sauvegardée
1186                                      //$sauvegardes[$cpt]['partition']=$tab_part[$k];
1187                                      $sauvegardes[$cpt]['partition']="";
1188                                      $sauvegardes[$cpt]['chemin']=trim($fl2[$j]);
1189                                      $sauvegardes[$cpt]['details']="";
1190                                      $sauvegardes[$cpt]['df']="";
1191  
1192                                      fich_log_debug("\$sauvegardes[$cpt]['chemin']=".$sauvegardes[$cpt]['chemin']."\n");
1193  
1194                                      if($fl3) {
1195                                          fich_log_debug("sauvegardes_".$tab_part[$k]."_details.txt trouvé.\n");
1196                                          $temoin1="n";
1197                                          for($m=0;$m<count($fl3);$m++){
1198                                              //if(preg_match("/Infos sur /i".$sauvegardes[$cpt]['chemin'],$fl3[$m])) {$temoin1="y";}
1199                                              if(mb_ereg("Infos sur ".$sauvegardes[$cpt]['chemin'],$fl3[$m])) {$temoin1="y";}
1200                                              //if(preg_match("/___+\*+___/",trim($fl3[$m]))) {$temoin1="n";echo "TRUC";}
1201                                              //if(preg_match("/^___+/",trim($fl3[$m]))) {$temoin1="n";}
1202                                              if(preg_match("/^___\+\*\+___$/",trim($fl3[$m]))) {$temoin1="n";}
1203                                              if($temoin1=="y") {
1204                                                  $sauvegardes[$cpt]['details'].=$fl3[$m];
1205                                              }
1206  
1207                                              if(preg_match("/^partition=/",$fl3[$m])) {
1208                                                  $sauvegardes[$cpt]['partition']=preg_replace("/^partition=/","",$fl3[$m]);
1209                                              }
1210                                          }
1211                                      }
1212  
1213                                      if($fl4) {
1214                                          fich_log_debug("df_".$tab_part[$k].".txt trouvé.\n");
1215                                          for($m=0;$m<count($fl4);$m++){
1216                                              $sauvegardes[$cpt]['df'].=$fl4[$m];
1217                                          }
1218                                      }
1219  
1220                                      $cpt++;
1221                                  }
1222                              }
1223                          }
1224                      }
1225  
1226  
1227                      //========================================
1228                      $network_driver=array();
1229                      $url="http://$ip/~hacker/network_driver.txt";
1230                      unset($fl5);
1231                      if($fl5=@file($url)){
1232                          for($m=0;$m<count($fl5);$m++){
1233                              $network_driver[]=$fl5[$m];
1234                              fich_log_debug("network_driver[$m]=".$fl5[$m]."\n");
1235                          }
1236                      }
1237  
1238                      $storage_driver=array();
1239                      $url="http://$ip/~hacker/storage_driver.txt";
1240                      unset($fl6);
1241                      if($fl6=@file($url)){
1242                          for($m=0;$m<count($fl6);$m++){
1243                              $storage_driver[]=$fl6[$m];
1244                              fich_log_debug("storage_driver[$m]=".$fl6[$m]."\n");
1245                          }
1246                      }
1247                      //========================================
1248  
1249                      // Insertion dans les tables
1250                      $creation_table=creation_tftp_tables();
1251                      if(!$creation_table){
1252                          echo "Erreur lors de la création de la table 'se3_tftp_rapports'\n";
1253                      }
1254                      else{
1255                          //$sql="SELECT * FROM se3_tftp_action WHERE id='$id_machine';";
1256                          $sql="SELECT * FROM se3_dhcp WHERE id='$id_machine';";
1257                          $info_machine=mysql_query($sql);
1258  
1259                          if(!$info_machine){
1260                              echo "La machine n°$id_machine n'existe pas dans la table 'se3_dhcp'.\n";
1261                          }
1262                          else{
1263                              $lig_machine=mysql_fetch_object($info_machine);
1264                              $mac_machine=$lig_machine->mac;
1265                              $nom_machine=$lig_machine->name;
1266  
1267                              $corrige_mac=strtolower(strtr($mac_machine,":","-"));
1268  
1269                              $statut="SUCCES";
1270                              $descriptif=$partitionnement;
1271                              //if($descriptif!="") {$descriptif.="\n";}
1272                              if($descriptif!="") {
1273                                  $descriptif.="\n";
1274                              }
1275                              $descriptif.="___FIN_PARTITIONNEMENT___";
1276                              $descriptif.="\n";
1277  
1278                              $descriptif.=$infos;
1279                              if($infos!="") {
1280                                  $descriptif.="\n";
1281                              }
1282                              $descriptif.="___FIN_INFOS_DF___";
1283                              $descriptif.="\n";
1284  
1285                              if(count($sauvegardes)>0) {
1286                                  if($descriptif!="") {$descriptif.="\n";}
1287                                  for($i=0;$i<count($sauvegardes);$i++) {
1288                                      $descriptif.=$sauvegardes[$i]['chemin']."\n";
1289                                      if($sauvegardes[$i]['details']!="") {
1290                                          $descriptif.=$sauvegardes[$i]['details']."\n";
1291                                      }
1292                                      /*
1293                                      // Là, on insère le volume dispo autant de fois qu'il y a de sauvegarde, alors que le df est inséré une fois après les infos sur le partitionnement.
1294                                      if($sauvegardes[$i]['df']!="") {
1295                                          $descriptif.=$sauvegardes[$i]['df']."\n";
1296                                      }
1297                                      */
1298                                  }
1299                              }
1300  
1301                              # Insérer dans une table rapport
1302                              $sql="INSERT INTO se3_tftp_rapports SET id='$id_machine',
1303                                                                      name='$nom_machine',
1304                                                                      mac='$mac_machine',
1305                                                                      date='".timestamp_to_mysql_date($instant)."',
1306                                                                      tache='$nature',
1307                                                                      statut='$statut',
1308                                                                      descriptif='".addslashes($descriptif)."';";
1309                              //echo $sql;
1310                              $insert=mysql_query($sql);
1311                              if(!$insert){
1312                                  echo "ERREUR sur $sql\n";
1313                              }
1314  
1315                              if(count($sauvegardes)>0) {
1316                                  $creation_table=creation_tftp_tables();
1317                                  if(!$creation_table){
1318                                      echo "Erreur lors de la création de la table 'se3_tftp_sauvegardes'\n";
1319                                  }
1320                                  else{
1321                                      for($i=0;$i<count($sauvegardes);$i++) {
1322                                          $sql="INSERT INTO se3_tftp_sauvegardes SET id='$id_machine',
1323                                                                          name='$nom_machine',
1324                                                                          mac='$mac_machine',
1325                                                                          partition='".$sauvegardes[$i]['partition']."',
1326                                                                          image='".$sauvegardes[$i]['chemin']."',
1327                                                                          date='".timestamp_to_mysql_date($instant)."',
1328                                                                          descriptif='".addslashes($sauvegardes[$i]['details'])."',
1329                                                                          df='".$sauvegardes[$i]['df']."',
1330                                                                          partitionnement='".addslashes($partitionnement)."';";
1331  
1332                                          $insert=mysql_query($sql);
1333                                          if(!$insert){
1334                                              echo "ERREUR sur $sql\n";
1335                                          }
1336                                      }
1337                                  }
1338                              }
1339  
1340                              //========================================
1341                              $sql="DELETE FROM se3_tftp_infos WHERE id='$id_machine';";
1342                              //echo $sql;
1343                              $delete=mysql_query($sql);
1344                              if(!$delete){
1345                                  echo "ERREUR sur $sql\n";
1346                              }
1347                              for($i=0;$i<count($network_driver);$i++) {
1348                                  $sql="INSERT INTO se3_tftp_infos SET id='$id_machine',
1349                                                                  name='$nom_machine',
1350                                                                  mac='$mac_machine',
1351                                                                  nom='network_driver',
1352                                                                  valeur='".trim(addslashes($network_driver[$i]))."';";
1353                                  $insert=mysql_query($sql);
1354                                  if(!$insert){
1355                                      echo "ERREUR sur $sql\n";
1356                                  }
1357                              }
1358                              for($i=0;$i<count($storage_driver);$i++) {
1359                                  $sql="INSERT INTO se3_tftp_infos SET id='$id_machine',
1360                                                                  name='$nom_machine',
1361                                                                  mac='$mac_machine',
1362                                                                  nom='storage_driver',
1363                                                                  valeur='".trim(addslashes($storage_driver[$i]))."';";
1364                                  $insert=mysql_query($sql);
1365                                  if(!$insert){
1366                                      echo "ERREUR sur $sql\n";
1367                                  }
1368                              }
1369                              //========================================
1370  
1371                          }
1372                      }
1373                      // Ménage:
1374                      //rm -f resultat_restauration.txt
1375                      // Celui-là est récupéré où? en /tmp?
1376                      if(file_exists($lanceur_recup)) {
1377                          //unlink($lanceur_recup);
1378                          if(!unlink($lanceur_recup)){
1379                              echo "La suppression de $lanceur_recup a échoué.\n";
1380                          }
1381                      }
1382  
1383                      if($corrige_mac!="") {
1384                          if(file_exists("$tftp_pxelinux_cfg/01-$corrige_mac")) {
1385                              unlink("$tftp_pxelinux_cfg/01-$corrige_mac");
1386                          }
1387                      }
1388  
1389                      // Supprimer l'entrée dans se3_tftp_action
1390                      $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine';";
1391                      $nettoyage=mysql_query($sql);
1392                      if(!$nettoyage){
1393                          echo "ERREUR lors de la suppression de l'action sur\n   $sql\n";
1394                      }
1395                      exit();
1396                  }
1397                  else {
1398                      # On remet à plus tard...
1399                      #at +f 1 minute $0 $*
1400                      //exec("at +f 1 minute $lanceur_recup",$retour);
1401                      //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
1402                      @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
1403                      # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
1404                      # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
1405  
1406                      // Tester le $retour
1407                      if(count($retour)>0){
1408                          echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
1409                          for($i=0;$i<count($retour);$i++){
1410                              echo "$retour[$i]\n";
1411                          }
1412                      }
1413                  }
1414              }
1415              else {
1416                  # On remet à plus tard...
1417                  #at +f 1 minute $0 $*
1418                  //exec("at +f 1 minute $lanceur_recup",$retour);
1419                  //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
1420                  @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
1421                  # où $lanceur_recup est généré par l'interface Web SE3 et effectue:
1422                  # recup_rapport.sh $id_machine $ip $nature_tache $timestamp_limite_validite_relance
1423  
1424                  // Tester le $retour
1425                  if(count($retour)>0){
1426                      echo "La programmation\n   at -f $lanceur_recup now + 1 minute\na échoué...\n";
1427                      for($i=0;$i<count($retour);$i++){
1428                          echo "$retour[$i]\n";
1429                      }
1430                  }
1431              }
1432  
1433              break;
1434      }
1435  
1436  ?>


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