\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); // 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); echo "

".gettext("Action rapport 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(); } } if(!isset($parc)){ echo "

Cette page doit vous permettre de programmer un test de mémoire vive sur les machines choisies.
Le dispositif ne permet hélas pas de récupérer un rapport sur l'état des barrettes.
Il faut passer devant les stations pour constater l'état et taper sur ECHAP pour quitter ensuite.

\n"; 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"; 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"; // Sélection des machines à sauvegarder: echo "\n"; // Action programmée echo "\n"; echo "\n"; } } echo "
NomEtatSessionConfig DHCPSauvegardeRapport
\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"]."';"; // mp_curr[0]["macAddress"] correspond à une adresse mac recherchée dans l'annuaire LDAP. // Si les machines ont été changées et que l'on a ré-attribué le nom, il faut penser à nettoyer l'entrée dans l'annuaire: // source /usr/share/se3/sbin/variables_admin_ldap.sh // ldapdelete -x -D $ROOTDN -w $PASSDN cn=NOM_MACHINE,ou=Computers,$BASEDN // Et se reconnecter une fois sur la machine pour que le connexion.pl renseigne une nouvelle entrée cn=NOM_MACHINE //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 "
\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 l'action memtest

\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 sur lesquelles lancer le test de mémoire vive.

\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 sauvegarde: $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"; // Date pour le nom de l'image à générer: $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 pour le lancement du test de mémoire vive :
\n"; echo "\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"; } else { echo "

Validation des paramètres du test de mémoire vive

\n"; echo "

Génération du fichier dans /tftpboot/pxelinux.cfg/ pour la remontée de rapports.
\n"; // BOUCLE SUR LA LISTE DES $id_machine[$i] // Numéro de l'opération de test de mémoire vive: $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"; $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'memtest' '$corrige_mac' '$ip_machine' '$nom_machine'", $retour); 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='memtest', num_op='$num_op', infos='';"; $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+"); // On donne 4H pour que la récup soit effectuée: $timestamp_limit=time()+4*3600; //fwrite($fich,"/usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' 'rapport' '$timestamp_limit'"); fwrite($fich,"sudo /usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' 'rapport' '$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); //passthru("at -f $lanceur_recup now + 1 minute",$retour); if($retour) { echo "ECHEC de la planification de la tâche.
\n"; for($j=0;$j\n";} //echo "$retour
\n"; $temoin_erreur="y"; } */ /* // Avec ça on arrive à récupérer l'info: // -warning: commands will be executed using /bin/sh - // -job 1572 at 2008-03-01 15:13 - // Mais une fois le at repoussé, ce n'est plus www-se3, mais root qui en est proprio... if(file_exists("$dossier/at.txt")) { $fp=fopen("$dossier/at.txt","r"); while(!feof($fp)) { $ligne=fgets($fp,4096); echo "

-".$ligne."-

"; } fclose($fp); } */ /* $fp=popen("at -f $lanceur_recup now + 1 minute","r"); while(!feof($fp)) { $ligne=fgets($fp,4096); echo "

-".$ligne."-

"; } fclose($fp); */ 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"); ?>