[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |