\n";
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);
//$validation_parametres2=isset($_POST['validation_parametres2']) ? $_POST['validation_parametres2'] : (isset($_GET['validation_parametres2']) ? $_GET['validation_parametres2'] : NULL);
//if((!isset($validation_parametres))&&(!isset($validation_parametres2))) {
if(!isset($validation_parametres)) {
echo "Paramétrage de la sauvegarde
\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 à sauvegarder.
\n";
echo "Retour au choix du/des parc(s).
\n";
include ("pdp.inc.php");
exit();
}
echo "\n";
echo "\n";
//======================================================
$temoin_svg_existantes=0;
$chaine_tab="Liste des sauvegardes existantes:
\n";
$chaine_tab.="\n";
$chaine_tab.="\n";
$chaine_tab.="Id | \n";
$chaine_tab.="Nom | \n";
$chaine_tab.="Partition | \n";
$chaine_tab.="Sauvegarde | \n";
$chaine_tab.="Date | \n";
$chaine_tab.="Descriptif | \n";
$chaine_tab.="
\n";
for($i=0;$i";
$res=mysql_query($sql);
if(mysql_num_rows($res)>0) {
while($lig=mysql_fetch_object($res)) {
$chaine_tab.="\n";
$chaine_tab.="$lig->id | \n";
$chaine_tab.="$lig->name | \n";
$chaine_tab.="$lig->partition | \n";
$chaine_tab.="$lig->image | \n";
$chaine_tab.="".mysql_date_to_fr_date($lig->date)." | \n";
$chaine_tab.="$lig->descriptif | \n";
$chaine_tab.="
\n";
$temoin_svg_existantes++;
}
}
}
$chaine_tab.="
\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 "- 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 "- Si le nom de sauvegarde fourni correspond à un nom de sauvegarde existante, la sauvegarde précédente est supprimée.
\n";
echo "- Pour que la sauvegarde 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 sauvegarde
\n";
//debug_var();
$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 "Distribution linux à utiliser: | \n";
echo "\n";
echo $distrib;
if($distrib=='sysresccd') {
echo " (noyau $sysresccd_kernel)";
}
echo "\n";
echo " | \n";
echo "
\n";
}
else {
echo "\n";
echo "\n";
}
echo "\n";
echo "Nom de l'image: | \n";
echo "\n";
if($nom_image=="") {echo "Nom généré automatiquement lors de la sauvegarde.";} else {echo $nom_image;}
echo " | \n";
echo "
\n";
echo "\n";
echo "Partition à sauvegarder: | \n";
echo "\n";
if($src_part=="auto") {echo "Détectée automatiquement lors de la sauvegarde.";} else {echo $src_part;}
echo " | \n";
echo "
\n";
if($type_dest_part=='partition') {
echo "\n";
echo "Partition de stockage de la sauvegarde: | \n";
echo "\n";
if($dest_part=="auto") {echo "Détectée automatiquement lors de la sauvegarde.";} else {echo $dest_part;}
echo " | \n";
echo "
\n";
}
elseif($type_dest_part=='smb') {
if($dest_srv!='') {crob_setParam('svg_default_srv',$_POST['dest_srv'],'Serveur samba par défaut de destination des sauvegardes (TFTP)');}
if($dest_partage!='') {crob_setParam('svg_default_partage',$_POST['dest_partage'],'Partage samba par défaut de destination des sauvegardes (TFTP)');}
if($dest_sous_dossier!='') {crob_setParam('svg_default_dossier',$_POST['dest_sous_dossier'],'Sous-dossier par défaut de destination des sauvegardes (TFTP)');}
if($dest_compte!='') {crob_setParam('svg_default_compte',$_POST['dest_compte'],'Compte par défaut pour le montage de la destination des sauvegardes (TFTP)');}
echo "\n";
echo "Sauvegarde dans un partage Window$/Samba: | \n";
echo "\n";
echo "\n";
echo "\n";
echo "Serveur : | \n";
echo "$dest_srv | \n";
echo " \n";
echo "\n";
echo "Partage : | \n";
echo "$dest_partage | \n";
echo " \n";
echo "\n";
echo "Sous-dossier : | \n";
echo "$dest_sous_dossier | \n";
echo " \n";
echo "\n";
echo "Compte : | \n";
echo "$dest_compte | \n";
echo " \n";
echo "\n";
echo "Mot de passe : | \n";
echo "XXXXXXXX | \n";
echo " \n";
echo " \n";
echo " | \n";
echo "
\n";
}
else {
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 "";
echo $type_svg;
if($type_svg!='') {crob_setParam('svg_default_type_svg',$_POST['type_svg'],'Type par defaut des sauvegardes.');}
echo " | \n";
echo "
\n";
if((isset($_POST['suppr_old_svg']))&&($_POST['suppr_old_svg']=='y')) {
$del_old_svg=$_POST['del_old_svg'];
echo "\n";
echo "Suppression des sauvegardes antérieures: | \n";
echo "\n";
if($del_old_svg=="all") {echo "Toutes les sauvegardes antérieures.";} else {echo "Les sauvegardes de plus de $del_old_svg mois?";}
echo " | \n";
echo "
\n";
}
echo "\n";
echo "Rebooter en fin de sauvegarde: | \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 sauvegarde.
\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";
$traiter_machine_courante='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";
$ajout="";
$ajout2="";
$ajout3="";
if(isset($del_old_svg)) {
$ajout=" '$del_old_svg'";
$ajout2="|del_old_svg=$del_old_svg";
$ajout3=" 'del_old_svg=$del_old_svg'";
}
if($distrib=='slitaz') {
$ajout_kernel="";
}
else {
$ajout_kernel="|kernel=$sysresccd_kernel";
}
if($distrib=='slitaz') {
//$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sauve' '$corrige_mac' '$ip_machine' '$nom_machine' '$nom_image' '$src_part' '$dest_part' '$auto_reboot' '$delais_reboot'$ajout", $retour);
$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sauve' '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 $ajout3'", $retour);
echo "/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sauve' '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 $ajout3'
";
$info_dest_part=$dest_part;
}
else {
//echo "\$resultat=exec(\"/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_sauve' '$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_sauve' '$corrige_mac' '$ip_machine' '$nom_machine' '$nom_image' '$src_part' '$dest_part' '$auto_reboot' '$delais_reboot'$ajout", $retour);
if($type_dest_part=='smb') {
$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_sauve' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=smb:$dest_compte:$dest_mdp@$dest_srv:$dest_partage:$dest_sous_dossier type_svg=$type_svg auto_reboot=$auto_reboot delais_reboot=$delais_reboot kernel=$sysresccd_kernel $ajout3 $opt_url_authorized_keys'", $retour);
$info_dest_part="smb:$dest_compte:XXXXXXXX@$dest_srv:$dest_partage:$dest_sous_dossier";
}
else {
$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_sauve' '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 $ajout3 $opt_url_authorized_keys'", $retour);
$info_dest_part=$dest_part;
}
}
if(count($retour)>0){
//echo "";
//echo "Il semble que la génération du fichier ait échoué...
\n";
echo "ECHEC de la génération du fichier
\n";
for($j=0;$j\n";
}
$temoin_erreur="y";
//echo "
\n";
}
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='sauvegarde',
num_op='$num_op',
infos='nom_image=$nom_image|src_part=$src_part|dest_part=$info_dest_part|auto_reboot=$auto_reboot|delais_reboot=${delais_reboot}${ajout_kernel}${ajout2}';";
$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' 'sauvegarde' '$timestamp_limit'");
if($distrib=='slitaz') {
$mode_sauvegarde="sauvegarde";
}
else {
$mode_sauvegarde="sauvegarde_sysresccd";
}
fwrite($fich,"sudo /usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' '$mode_sauvegarde' '$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";
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-$lig1->mac","r");
$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");
?>