\n"; // CSS pour mes tableaux: echo "\n"; if ((is_admin("system_is_admin",$login)=="Y")||(ldap_get_right("parc_can_clone",$login)=="Y")) { // Choix des parcs: $parc=isset($_POST['parc']) ? $_POST['parc'] : (isset($_GET['parc']) ? $_GET['parc'] : NULL); // Choix des machines: $id_machine=isset($_POST['id_machine']) ? $_POST['id_machine'] : (isset($_GET['id_machine']) ? $_GET['id_machine'] : NULL); $parametrage_action=isset($_POST['parametrage_action']) ? $_POST['parametrage_action'] : (isset($_GET['parametrage_action']) ? $_GET['parametrage_action'] : NULL); $pref_distrib_svgrest=crob_getParam('pref_distrib_svgrest'); if(($pref_distrib_svgrest=='slitaz')||($pref_distrib_svgrest=='sysresccd')) {$valeur_par_defaut=$pref_distrib_svgrest;} else {$valeur_par_defaut="slitaz";} $distrib=isset($_POST['distrib']) ? $_POST['distrib'] : $valeur_par_defaut; $sysresccd_kernel=isset($_POST['sysresccd_kernel']) ? $_POST['sysresccd_kernel'] : "rescue32"; // Création de la table dès que possible: creation_tftp_tables(); // Paramètres SliTaz: $nom_image=isset($_POST['nom_image']) ? $_POST['nom_image'] : (isset($_GET['nom_image']) ? $_GET['nom_image'] : NULL); $src_part=isset($_POST['src_part']) ? $_POST['src_part'] : (isset($_GET['src_part']) ? $_GET['src_part'] : NULL); $dest_part=isset($_POST['dest_part']) ? $_POST['dest_part'] : (isset($_GET['dest_part']) ? $_GET['dest_part'] : NULL); $auto_reboot=isset($_POST['auto_reboot']) ? $_POST['auto_reboot'] : (isset($_GET['auto_reboot']) ? $_GET['auto_reboot'] : NULL); $delais_reboot=isset($_POST['delais_reboot']) ? $_POST['delais_reboot'] : (isset($_GET['delais_reboot']) ? $_GET['delais_reboot'] : NULL); // Paramètres concernant l'action immédiate sur les machines choisies: $wake=isset($_POST['wake']) ? $_POST['wake'] : (isset($_GET['wake']) ? $_GET['wake'] : "n"); $shutdown_reboot=isset($_POST['shutdown_reboot']) ? $_POST['shutdown_reboot'] : (isset($_GET['shutdown_reboot']) ? $_GET['shutdown_reboot'] : NULL); $type_src_part=isset($_POST['type_src_part']) ? $_POST['type_src_part'] : "partition"; $src_srv=isset($_POST['src_srv']) ? $_POST['src_srv'] : ""; $src_partage=isset($_POST['src_partage']) ? $_POST['src_partage'] : ""; $src_sous_dossier=isset($_POST['src_sous_dossier']) ? $_POST['src_sous_dossier'] : ""; $src_compte=isset($_POST['src_compte']) ? $_POST['src_compte'] : ""; $src_mdp=isset($_POST['src_mdp']) ? $_POST['src_mdp'] : ""; $type_svg=isset($_POST['type_svg']) ? $_POST['type_svg'] : "partimage"; echo "

".gettext("Action restauration TFTP")."

\n"; $restriction_parcs="n"; if(is_admin("system_is_admin",$login)!="Y") { $restriction_parcs="y"; $tab_delegated_parcs=list_delegated_parcs($login); if(count($tab_delegated_parcs)==0) { echo "

Aucun parc ne vous a été délégué.

\n"; include ("pdp.inc.php"); die(); } } $temoin_fichiers_requis="y"; $chemin_tftpboot="/tftpboot"; $tab_udpcast_file=array("bzImage", "rootfs.gz"); for($loop=0;$loop".$chemin_tftpboot."/".$tab_udpcast_file[$loop]." est absent.
\n"; echo "Effectuez le telechargement SliTaz en Configurer le module TFTP
\n"; $temoin_fichiers_requis="n"; } } if($temoin_fichiers_requis=="n") { echo "

ABANDON : Un ou des fichiers requis sont manquants.

\n"; include ("pdp.inc.php"); die(); } if(!isset($parc)){ echo "

Choisissez un ou des parcs:

\n"; $list_parcs=search_machines("objectclass=groupOfNames","parcs"); if ( count($list_parcs)==0) { echo "

"; echo gettext("Il n'existe aucun parc. Vous devez d'abord créer un parc"); include ("pdp.inc.php"); exit; } sort($list_parcs); echo "
\n"; // Affichage des parcs sur 3/4 colonnes $nb_parcs_par_colonne=round(count($list_parcs)/3); echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
     \n"; for ($loop=0; $loop < count($list_parcs); $loop++) { if(($loop>0)&&(round($loop/$nb_parcs_par_colonne)==$loop/$nb_parcs_par_colonne)){ echo "\n"; } if(($restriction_parcs=="n")||(in_array($list_parcs[$loop]["cn"], $tab_delegated_parcs))) { echo "\n"; echo "
\n"; } } echo "
\n"; echo "

\n"; echo "
\n"; echo "\n"; echo "

Retour à l'index.

\n"; } else { if(!isset($_POST['parametrage_action'])){ echo "
\n"; echo "\n"; $max_eff_parc=0; for($i=0;$iParc $parc[$i]\n"; echo "\n"; $mp=gof_members($parc[$i],"parcs",1); $nombre_machine=count($mp); sort($mp); //echo "\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; //echo "\n"; echo "\n"; echo "\n"; echo "\n"; for ($loop=0; $loop < count($mp); $loop++) { $mpenc=urlencode($mp[$loop]); // Test si on a une imprimante ou une machine $resultat=search_imprimantes("printer-name=$mpenc","printers"); $suisje_printer="non"; for ($loopp=0; $loopp < count($resultat); $loopp++) { if ($mpenc==$resultat[$loopp]['printer-name']) { $suisje_printer="yes"; continue; } } if($suisje_printer=="non") { // Réinitialisation: $id_machine=""; echo "\n"; echo "\n"; // Etat: allumé ou éteint echo "\n"; // Session: ouverte ou pas... sous quelle identité echo "\n"; // Etat config DHCP: // Par la suite il ne faudra pas prendre les IP dans l'annuaire, // mais dans la config DHCP parce que ce sont ces IP qui seront attribuées lors du boot PXE echo "\n"; //dernier rapport $sql="SELECT * FROM se3_tftp_rapports WHERE name='".$mp[$loop]."' ORDER BY date DESC LIMIT 1;"; $res_rapport_tftp=mysql_query($sql); if(mysql_num_rows($res_rapport_tftp)>0) { $lig=mysql_fetch_object($res_rapport_tftp); echo "\n"; } else { echo "\n"; } // Sélection des machines à sauvegarder: echo "\n"; // Action programmée echo "\n"; echo "\n"; } } echo "
NomEtatSessionConfig DHCPDernier RapportRestaurationRestauration
\n"; echo "\"Tout\n"; echo " / \"Tout\n"; echo "
Actions programmées
".$mp[$loop].""; $mp_curr=search_machines2("(&(cn=$mpenc)(objectClass=ipHost))","computers"); if ($mp_curr[0]["ipHostNumber"]) { $iphost=$mp_curr[0]["ipHostNumber"]; echo "
Patientez
\n"; echo "\n"; } echo "
\n"; echo "
Patientez
\n"; echo "\n"; echo "
\n"; //$mp_curr=search_machines("(&(cn=$mpenc)(objectClass=ipHost))","computers"); if ($mp_curr[0]["macAddress"]) { $sql="SELECT * FROM se3_dhcp WHERE mac='".$mp_curr[0]["macAddress"]."';"; //echo "$sql
"; $res=mysql_query($sql); if(mysql_num_rows($res)>0) { $lig=mysql_fetch_object($res); $id_machine=$lig->id; //echo $lig->ip; echo "\"$lig-ip\" title=\"$lig->ip\" />"; } else { echo "\"Pas"; } } else { echo "\"Pas"; } echo "
"; echo "id\" target='_blank'>".$lig->date."\n"; $st="$lig->statut"; if($st=="SUCCES") { $cl="green"; } else { $cl="red"; } echo ""."$lig->statut".""; echo "".gettext("Aucun rapport")."\n"; /* foreach($mp_curr[0] as $champ => $valeur) { echo "\$mp_curr[0]['$champ']=$valeur
"; } */ if($id_machine!=""){ echo "\n"; } else { echo "\"Il"; } echo "
\n"; if($id_machine!=""){ $sql="SELECT * FROM se3_tftp_action WHERE id='".$id_machine."';"; $res=mysql_query($sql); if(mysql_num_rows($res)>0) { $lig=mysql_fetch_object($res); echo "$lig->type programmé(e)"; } else { echo "\"Pas"; } } echo "
\n"; if($max_eff_parc<$loop) {$max_eff_parc=$loop;} } echo "\n"; echo "

\n"; echo "\n"; } else { $validation_parametres=isset($_POST['validation_parametres']) ? $_POST['validation_parametres'] : (isset($_GET['validation_parametres']) ? $_GET['validation_parametres'] : NULL); if(!isset($validation_parametres)) { echo "

Paramétrage de la restauration

\n"; $nombre_machines=count($id_machine); if($nombre_machines==0){ echo "

ERREUR: Il faut choisir au moins une machine.

\n"; echo "

Retour au choix des machines à restaurer.

\n"; echo "

Retour au choix du/des parc(s).

\n"; include ("pdp.inc.php"); exit(); } echo "
\n"; echo "\n"; // Liste des parcs: for($i=0;$i\n"; } // Liste des machines sur lesquelles lancer la restauration: $chaine=""; for($i=0;$i0) {$chaine.=", ";} $sql="SELECT * FROM se3_dhcp WHERE id='".$id_machine[$i]."';"; //echo "$sql
"; $res=mysql_query($sql); if(mysql_num_rows($res)>0) { $lig=mysql_fetch_object($res); $chaine.=$lig->name; echo "\n"; } } if(count($id_machine)>1){$s="s";}else{$s="";} echo "

Machine$s concernée$s: $chaine

\n"; $aujourdhui = getdate(); $mois_se3 = sprintf("%02d",$aujourdhui['mon']); $jour_se3 = sprintf("%02d",$aujourdhui['mday']); $annee_se3 = $aujourdhui['year']; $heure_se3 = sprintf("%02d",$aujourdhui['hours']); $minute_se3 = sprintf("%02d",$aujourdhui['minutes']); $seconde_se3 = sprintf("%02d",$aujourdhui['seconds']); $date_se3=$annee_se3.$mois_se3.$jour_se3; echo "

Choisissez les paramètres de restauration:
\n"; $temoin_sysresccd=check_sysresccd_files(); if($temoin_sysresccd=="y") { // Il faut aussi le noyau et l'initram.igz dans /tftpboot, echo "
\n"; echo " (plus long à booter et 300Mo de RAM minimum, mais meilleure détection des pilotes)
\n"; echo "

\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo "Utiliser le noyau : "; echo "\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
\n"; } else { echo "\n"; } echo "\n"; echo "\n"; echo "\n"; /* echo "\n"; */ $srcd_scripts_vers=crob_getParam('srcd_scripts_vers'); if(($temoin_sysresccd=="y")&&($srcd_scripts_vers!='')&&($srcd_scripts_vers>=20111008)) { echo "\n"; echo "\n"; echo "\n"; /* // Le type de sauvegarde est indentifié par le script d'après le nom de l'image echo "\n"; echo "\n"; */ } else { echo "\n"; } if(($temoin_sysresccd=="y")&&(crob_getParam('srcd_scripts_vers')>='20110910')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
Nom de l'image à restaurer: \n"; echo "\n"; echo "
Partition à restaurer: \n"; echo "\n"; echo "
Partition de stockage de l'image: \n"; echo "ou à défaut W$ après la partition système) est bien la partition de stockage.')")."\">\n"; echo "
\n"; echo "ou à défaut W$ après la partition système) est bien la partition de stockage.')")."\">\n"; echo "
Ou

(tous les champs doivent être renseignés
si vous optez pour ce choix
)
\n"; echo "
\n"; $svg_default_srv=crob_getParam('svg_default_srv'); if($svg_default_srv=='') {$svg_default_srv=crob_getParam('se3ip');} $svg_default_partage=crob_getParam('svg_default_partage'); $svg_default_dossier=crob_getParam('svg_default_dossier'); $svg_default_compte=crob_getParam('svg_default_compte'); echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
Serveur :
Partage :
Sous-dossier :\n"; echo "\n"; echo "
\n"; echo "Si un sous-dossier <ADRESSE_MAC> du dossier proposé ici existe, la sauvegarde y sera d'abord recherchée, avant de se rabattre sur le sous-dossier proposé lui-même si un tel dossier n'existe pas.\n"; echo "
Compte :
Mot de passe :
Attention : Le mot de passe circule en clair.
Evitez d'utiliser un compte comme admin ou adminse3.
\n"; echo "
Type de sauvegarde : \n"; echo "
\n"; echo "
\n"; echo "
\n"; echo "
Partition de stockage: \n"; echo "ou à défaut W$ après la partition système) est bien la partition de stockage.')")."\">\n"; echo "
Url authorized_keys : \n"; echo "\n"; echo "\n"; echo "\n"; echo "
Rebooter en fin de restauration: \n"; echo "\n"; echo "
Eteindre en fin de restauration: \n"; echo "\n"; echo "
Ne pas rebooter ni éteindre la machine
en fin de restauration:
\n"; echo "\n"; echo "
\n"; echo "Délai avant reboot/arrêt:\n"; echo "\n"; echo "\n"; echo "
Pour la ou les machines sélectionnées: \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo "
\n"; echo "\n"; echo "\n"; echo ""; echo "\n"; echo "\n"; //====================================================== $temoin_svg_existantes=0; $chaine_tab="

Liste des sauvegardes existantes:

\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; for($i=0;$i"; $res=mysql_query($sql); $sql="SELECT * FROM se3_tftp_sauvegardes WHERE id='".$id_machine[$i]."' ORDER BY date DESC;"; //echo "$sql
"; $res=mysql_query($sql); if(mysql_num_rows($res)>0) { while($lig=mysql_fetch_object($res)) { $chaine_tab.="
\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $chaine_tab.="\n"; $temoin_svg_existantes++; } } } $chaine_tab.="
IdNomPartitionSauvegardeDateDescriptif
$lig->id$lig->name$lig->partition$lig->image".mysql_date_to_fr_date($lig->date)."
$lig->descriptif
\n"; $chaine_tab.="


\n"; if($temoin_svg_existantes>0) { echo $chaine_tab; } //====================================================== echo "

NOTES:

\n"; echo "
    \n"; echo "
  • Ce choix nécessite une partition de sauvegarde sur la machine.
  • \n"; echo "
  • Si le nom de l'image est laissé vide, c'est la sauvegarde la plus récente tagguée 'SUCCES' qui est utilisée.
    C'est-à-dire qu'il doit exister un fichier NOM_SAUVEGARDE.SUCCES.txt
    Les sauvegardes sont recherchées dans un dossier /oscar/ à la racine de la partition (si le nom de l'image est laissé vide).
  • \n"; echo "
  • Il faudra stocker dans une table les informations sur les sauvegardes effectuées/trouvées pour pouvoir ne proposer ici que des choix valides.
  • \n"; echo "
  • Attention: Le délai avant reboot ajouté au temps de l'opération lancée doit dépasser la périodicité du script controle_actions_tftp.sh en crontab.
    Ce délai doit aussi permettre de récupérer en http://IP_CLIENT/~hacker/Public/*.txt des informations sur le succès ou l'échec de l'opération.
    Une tâche cron se charge d'effectuer le 'wget' sur les infos, puis le remplissage d'une table MySQL.
    La tâche cron est lancée toutes les 60s.
  • \n"; echo "
  • Pour que la restauration puisse être entièrement provoquée depuis le serveur, il faut que les postes clients soient configurés pour booter en PXE (ou au moins s'éveiller (wol) en bootant sur le réseau).
    Dans le cas contraire, vous devrez passer sur les postes et presser F12 pour choisir de booter en PXE.
  • \n"; echo "
\n"; } else { echo "

Validation des paramètres de la restauration

\n"; $opt_url_authorized_keys=""; if((isset($_POST['prendre_en_compte_url_authorized_keys']))&&(isset($_POST['url_authorized_keys']))&&($_POST['url_authorized_keys']!='')&&(preg_replace('|[A-Za-z0-9/:_\.\-]|','',$_POST['url_authorized_keys'])=='')) { $opt_url_authorized_keys="url_authorized_keys=".$_POST['url_authorized_keys']; crob_setParam('url_authorized_keys',$_POST['url_authorized_keys'],'Url fichier authorized_keys pour acces ssh aux clients TFTP'); } echo "

Rappel des paramètres:

\n"; $sauvegarde_pref=crob_setParam('pref_distrib_svgrest', $distrib, 'Distrib preferee pour les sauvegardes et restaurations'); $temoin_sysresccd=check_sysresccd_files(); if($temoin_sysresccd=="y") { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } else { echo "\n"; echo "
Distribution linux à utiliser: \n"; echo $distrib; if($distrib=='sysresccd') { echo " (noyau $sysresccd_kernel)"; } echo "\n"; echo "
\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if($type_src_part=='partition') { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } elseif($type_src_part=='smb') { if($src_srv!='') {crob_setParam('svg_default_srv',$_POST['src_srv'],'Serveur samba par défaut de destination des sauvegardes (TFTP)');} if($src_partage!='') {crob_setParam('svg_default_partage',$_POST['src_partage'],'Partage samba par défaut de destination des sauvegardes (TFTP)');} if($src_sous_dossier!='') {crob_setParam('svg_default_dossier',$_POST['src_sous_dossier'],'Sous-dossier par défaut de destination des sauvegardes (TFTP)');} if($src_compte!='') {crob_setParam('svg_default_compte',$_POST['src_compte'],'Compte par défaut pour le montage de la destination des sauvegardes (TFTP)');} echo "\n"; echo "\n"; echo "\n"; echo "\n"; } else { echo "
Nom de l'image: \n"; if($nom_image=="") {echo "Détecté automatiquement lors de la restauration.";} else {echo $nom_image;} echo "
Partition à restaurer: \n"; if($dest_part=="auto") {echo "Détectée automatiquement lors de la restauration.";} else {echo $dest_part;} echo "
Partition de stockage de la sauvegarde: \n"; if($src_part=="auto") {echo "Détectée automatiquement lors de la restauration.";} else {echo $src_part;} echo "
Sauvegarde dans un partage Window$/Samba: \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
Serveur :$src_srv
Partage :$src_partage
Sous-dossier :$src_sous_dossier
Compte :$src_compte
Mot de passe :XXXXXXXX
\n"; echo "
\n"; echo "

ANOMALIE : Le type de la destination de sauvegarde est inconnu.

\n"; include ("pdp.inc.php"); die(); } /* echo "\n"; echo "Type de sauvegarde: \n"; echo "$type_svg\n"; echo "\n"; */ echo "\n"; echo "Rebooter en fin de restauration: \n"; echo "\n"; echo $auto_reboot; echo "\n"; echo "\n"; //if($auto_reboot=='y') { if(($auto_reboot=='y')||($auto_reboot=='halt')) { echo "\n"; echo "Délai avant reboot: \n"; echo "\n"; echo "$delais_reboot s"; echo "\n"; echo "\n"; } echo "\n"; echo "

Génération du fichier dans /tftpboot/pxelinux.cfg/ pour la restauration.
\n"; // BOUCLE SUR LA LISTE DES $id_machine[$i] // Numéro de l'opération de sauvegarde: $num_op=get_free_se3_action_tftp_num_op(); for($i=0;$i"; $res=mysql_query($sql); if(mysql_num_rows($res)==0) { echo "La machine d'identifiant $id_machine[$i] n'existe pas dans 'se3_dhcp'.
\n"; } else { $temoin_erreur="n"; $lig=mysql_fetch_object($res); $mac_machine=$lig->mac; $nom_machine=$lig->name; $ip_machine=$lig->ip; if($restriction_parcs=="y") { $temoin_erreur='y'; for($loop=0; $loopLa machine $nom_machine ne vous est pas déléguée

\n"; } else { echo "Génération pour $nom_machine: "; $corrige_mac=strtolower(strtr($mac_machine,":","-")); $chemin="/usr/share/se3/scripts"; if($distrib=='slitaz') { $ajout_kernel=""; } else { $ajout_kernel="|kernel=$sysresccd_kernel"; } if($distrib=='slitaz') { //$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'restaure' '$corrige_mac' '$ip_machine' '$nom_machine' '$nom_image' '$src_part' '$dest_part' '$auto_reboot' '$delais_reboot'", $retour); $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'restaure' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=$dest_part auto_reboot=$auto_reboot delais_reboot=$delais_reboot'", $retour); $info_src_part=$src_part; } else { //$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_restaure' '$corrige_mac' '$ip_machine' '$nom_machine' '$nom_image' '$src_part' '$dest_part' '$auto_reboot' '$delais_reboot'", $retour); //$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_restaure' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=$dest_part auto_reboot=$auto_reboot delais_reboot=$delais_reboot kernel=$sysresccd_kernel $opt_url_authorized_keys'", $retour); if($type_src_part=='smb') { //$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_restaure' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=smb:$src_compte:$src_mdp@$src_srv:$src_partage:$src_sous_dossier dest_part=$dest_part type_svg=$type_svg auto_reboot=$auto_reboot delais_reboot=$delais_reboot kernel=$sysresccd_kernel $opt_url_authorized_keys'", $retour); $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_restaure' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=smb:$src_compte:$src_mdp@$src_srv:$src_partage:$src_sous_dossier dest_part=$dest_part auto_reboot=$auto_reboot delais_reboot=$delais_reboot kernel=$sysresccd_kernel $opt_url_authorized_keys'", $retour); $info_src_part="smb:$src_compte:XXXXXXXX@$src_srv:$src_partage:$src_sous_dossier"; } else { //$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_restaure' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=$dest_part type_svg=$type_svg auto_reboot=$auto_reboot delais_reboot=$delais_reboot kernel=$sysresccd_kernel $opt_url_authorized_keys'", $retour); $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_restaure' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=$dest_part auto_reboot=$auto_reboot delais_reboot=$delais_reboot kernel=$sysresccd_kernel $opt_url_authorized_keys'", $retour); $info_src_part=$src_part; } } if(count($retour)>0){ echo "ECHEC de la génération du fichier
\n"; for($j=0;$j\n"; } $temoin_erreur="y"; } else { $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine[$i]';"; $suppr=mysql_query($sql); $timestamp=time(); $sql="INSERT INTO se3_tftp_action SET id='$id_machine[$i]', mac='$mac_machine', name='$nom_machine', date='$timestamp', type='restauration', num_op='$num_op', infos='nom_image=$nom_image|src_part=$info_src_part|dest_part=$dest_part|auto_reboot=$auto_reboot|delais_reboot=${delais_reboot}$ajout_kernel';"; $insert=mysql_query($sql); if(!$insert) { echo "ECHEC de l'enregistrement dans 'se3_tftp_action'
\n"; $temoin_erreur="y"; } // Génération du lanceur de récupération: //$dossier="/var/se3/tmp/tftp/$id_machine[$i]"; $dossier="/etc/se3/www-tools/tftp/$id_machine[$i]"; if(!file_exists($dossier)) { mkdir($dossier,0700);} $lanceur_recup="$dossier/lanceur_recup_rapport_action_tftp.sh"; $fich=fopen($lanceur_recup,"w+"); $timestamp_limit=time()+4*3600; //fwrite($fich,"/usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' 'restauration' '$timestamp_limit'"); if($distrib=='slitaz') { $mode_restauration="restauration"; } else { $mode_restauration="restauration_sysresccd"; } fwrite($fich,"sudo /usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' '$mode_restauration' '$timestamp_limit'"); fclose($fich); chmod($lanceur_recup,0750); // Ménage dans les tâches précédentes @exec("sudo /usr/share/se3/scripts/se3_tftp_menage_atq.sh $id_machine[$i]",$retour); // Planification de la tâche //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour); @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour); if($retour) { echo "ECHEC de la planification de la tâche.
\n"; for($j=0;$j\n";} $temoin_erreur="y"; } if($temoin_erreur=="n") { echo "OK\n"; // Application de l'action choisie: echo " "; echo "\n"; echo "
\n"; } } } } } // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- // POUVOIR TAGUER DANS LA TABLE se3_dhcp LES MACHINES QUI PEUVENT BOOTER EN PXE // Ajouter un champ? // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- // On n'affiche le fichier que pour le dernier (à titre d'info): if(isset($corrige_mac)) { $fich=fopen("/tftpboot/pxelinux.cfg/01-$corrige_mac","r"); if($fich) { echo "

Pour information, voici le contenu du fichier généré:
\n"; echo "

";
						while(!feof($fich)) {
							$ligne=fgets($fich,4096);
							echo htmlentities($ligne);
						}
						echo "
\n"; fclose($fich); } else { echo "

Il n'a pas été possible d'ouvrir le fichier /tftpboot/pxelinux.cfg/01-$corrige_mac

\n"; } } } } echo "

Retour au choix du/des parc(s).

\n"; } } else { print (gettext("Vous n'avez pas les droits nécessaires pour ouvrir cette page...")); } // Footer include ("pdp.inc.php"); ?>