echo "</td>\n"; echo "</tr>\n"; //if($auto_reboot=='y') { if ($auto_reboot == 'y' || $auto_reboot == 'halt') { echo "<tr>\n"; echo "<th style='text-align:left;'>Délai avant reboot: </th>\n"; echo "<td>\n"; echo "{$delais_reboot} s"; echo "</td>\n"; echo "</tr>\n"; } echo "</table>\n"; echo "<p>Génération du fichier dans /tftpboot/pxelinux.cfg/ pour la remontée de rapports.<br />\n"; // BOUCLE SUR LA LISTE DES $id_machine[$i] // Numéro de l'opération de remontée de rapport: $num_op = get_free_se3_action_tftp_num_op(); for ($i = 0; $i < count($id_machine); $i++) { $sql = "SELECT * FROM se3_dhcp WHERE id='" . $id_machine[$i] . "';"; //echo "$sql<br />"; $res = mysql_query($sql); if (mysql_num_rows($res) == 0) { echo "<span style='color:red;'>La machine d'identifiant {$id_machine[$i]} n'existe pas dans 'se3_dhcp'.</span><br />\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; $loop < count($tab_delegated_parcs); $loop++) {
/** * ecriture des fichiers pressed en fction des infos précendentes * @Parametres $id_machine * @Return */ function valid_dist($id_machine) { echo "<h2>Validation des paramètres du lancement de l'installation</h2>\n"; //debug_var(); //while read A;do B=$(echo "$A"|cut -d"'" -f2);echo "\$$B=isset($A) ? $A : 'on';";done < liste_champs.txt //while read A;do B=$(echo "$A"|cut -d"'" -f2);echo "$B=\$$B";done < liste_champs.txt //echo "$_POST[arch]"; //========================= // Extraction de paramètres nécessaires par la suite $query = "SELECT * from params where name='xppass' OR name='se3_domain' OR name='se3ip'"; $result = mysql_query($query); while ($resultat = mysql_fetch_assoc($result)) { $infos[$resultat['name']] = $resultat['value']; } $xppass = $infos['xppass']; $domaine_local = $infos['se3_domain']; $se3ip = $infos['se3ip']; //========================= //========================= // Mirroir $mirroir = isset($_POST['mirroir']) ? explode('/', $_POST['mirroir']) : explode('/', 'ftp.fr.debian.org/debian'); $mirror['hostname'] = $mirroir[0]; //$mirror['directory'] = $mirroir[1]; $mirror['directory'] = "/depot/debian"; //========================= //========================= // Architecture $arch = isset($_POST['arch']) ? $_POST['arch'] : 'i386'; //========================= //========================= // environnement de bureau $envbur = isset($_POST['envbur']) ? $_POST['envbur'] : 'xfce'; //========================= //========================= // Partitionnement $fdisk = isset($_POST['fdisk']) ? $_POST['fdisk'] : 1; // Au cas où l'admin a désactivé Javascript, on installe dans une partition libre ... //========================= //========================= // Serveur de temps NTP $ntpserv = isset($_POST['ntpserv']) ? $_POST['ntpserv'] : 'ntp.ac-creteil.fr'; //$sql="SELECT value FROM params WHERE name='dhcp_ntp';"; //$res=mysql_query($sql); //if(mysql_num_rows($res)>0) { // $lig=mysql_fetch_object($res); // if($lig->value!="") {$dhcp_ntp=$lig->value;} // // Il faudrait contrôler que l'adresse est valide, non? //} //========================= //========================= // Mot de passe root $root_pass = isset($_POST['root_mdp']) ? crypt($_POST['root_mdp']) : crypt($xppass); //========================= //========================= // Nouvel utilisateur $newuser_name = isset($_POST['newuser_name']) ? $_POST['newuser_name'] : "enseignant"; $newuser_pass = isset($_POST['newuser_mdp']) ? crypt($_POST['newuser_mdp']) : crypt(enseignant); //========================= //========================= // Mot de passe grub $grub_pass = isset($_POST['grub_mdp']) ? crypt($_POST['grub_mdp']) : crypt($xppass); //========================= //========================= // Serveur TFTP $dhcp_tftp_server = $_SERVER["SERVER_ADDR"]; //========================= // rECUP VARIABLES WAKE ET SHUTDOWN $wake = $_POST["wake"]; $shutdown_reboot = $_POST["shutdown_reboot"]; $sql = "SELECT value FROM params WHERE name='dhcp_tftp_server';"; $res = mysql_query($sql); if (mysql_num_rows($res) > 0) { $lig = mysql_fetch_object($res); if ($lig->value != "") { $dhcp_tftp_server = $lig->value; } // Il faudrait contrôler que l'adresse est valide, non? } //========================= echo "<p>"; for ($i = 0; $i < count($id_machine); $i++) { $sql = "SELECT * FROM se3_dhcp WHERE id='" . $id_machine[$i] . "';"; $res = mysql_query($sql); if (mysql_num_rows($res) == 0) { echo "<span style='color:red;'>La machine d'identifiant {$id_machine[$i]} n'existe pas dans 'se3_dhcp'.</span><br />\n"; } else { $lig = mysql_fetch_object($res); $nom_machine = $lig->name; // On écrit le fichier preseed dans le bon dossier $dossier_preseed = "/var/www/se3/tmp/"; $dossier_preseed_src = "/var/www/install/"; $preseeddebian = "preseed_debian.cfg"; $preseedmonreseau = "preseed_debian_monreseau.cfg"; //$dossier_unattend_txt="/var/www/preseeds"; $preseeddest = $dossier_preseed . $nom_machine . "_preseed.cfg"; if ($fdisk == 0) { $preseedsrc = $dossier_preseed_src . "preseed_debian_" . $envbur . ".cfg"; $preseedboot = "preseed_debian_only.cfg"; } else { if ($fdisk == 1) { $preseedsrc = $dossier_preseed_src . "preseed_debian_" . $envbur . "_dboot.cfg"; $preseedboot = "preseed_debian_dboot.cfg"; } } $fu = fopen($dossier_preseed . $nom_machine . "_preseed.cfg", "w+"); if (!copy($preseedsrc, $preseeddest)) { echo "<p>ERREUR lors de la création de " . $dossier_preseed . "/" . $nom_machine . "_preseed.cfg</p>\n"; include "pdp.inc.php"; die; } $fu = fopen($dossier_preseed . $preseeddebian, "w+"); copy($dossier_preseed_src . $preseeddebian, $dossier_preseed . $preseeddebian); $fu = fopen($dossier_preseed . $preseedmonreseau, "w+"); copy($dossier_preseed_src . $preseedmonreseau, $dossier_preseed . $preseedmonreseau); $fu = fopen($dossier_preseed . $preseedboot, "w+"); copy($dossier_preseed_src . $preseedboot, $dossier_preseed . $preseedboot); } } echo "<p>Génération des fichiers dans /tftpboot/pxelinux.cfg/ pour l'installation automatique<br />\n"; // BOUCLE SUR LA LISTE DES $id_machine[$i] // Numéro de l'opération de remontée de rapport: $num_op = get_free_se3_action_tftp_num_op(); for ($i = 0; $i < count($id_machine); $i++) { $sql = "SELECT * FROM se3_dhcp WHERE id='" . $id_machine[$i] . "';"; $res = mysql_query($sql); if (mysql_num_rows($res) == 0) { echo "<span style='color:red;'>La machine d'identifiant {$id_machine[$i]} n'existe pas dans 'se3_dhcp'.</span><br />\n"; } else { $temoin_erreur = "n"; $lig = mysql_fetch_object($res); $mac_machine = $lig->mac; $nom_machine = $lig->name; $ip_machine = $lig->ip; //Ajouter ici le domaine local et l'url du preseed à passer à pxe_gen_cfg_debian.sh // domaine fait au début du script $url_du_preseed = "http://" . $se3ip . ":909/tmp/" . $nom_machine . "_preseed.cfg"; echo "Génération pour {$nom_machine} : "; $corrige_mac = strtolower(strtr($mac_machine, ":", "-")); $chemin = "/usr/share/se3/scripts"; $resultat = exec("{$chemin}/pxe_gen_cfg.sh 'install_linux' '{$corrige_mac}' '{$ip_machine}' '{$nom_machine}' '{$url_du_preseed}' '{$arch}'", $retour); if (count($retour) > 0) { echo "<span style='color:red;'>ECHEC de la génération du fichier</span><br />\n"; for ($j = 0; $j < count($retour); $j++) { echo "{$retour[$j]}<br />\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]}',\n\tmac='{$mac_machine}',\n\tname='{$nom_machine}',\n\tdate='{$timestamp}',\n\ttype='auto_linux',\n\tnum_op='{$num_op}',\n\tinfos='';"; $insert = mysql_query($sql); if (!$insert) { echo "<span style='color:red;'>ECHEC de l'enregistrement dans 'se3_tftp_action'</span><br />\n"; $temoin_erreur = "y"; } if ($temoin_erreur != "y") { echo "<span style='color:green;'>OK</span>\n"; echo " <span id='wake_shutdown_or_reboot_{$i}'></span>"; echo "<script type='text/javascript'>\n\t// <![CDATA[\n\tnew Ajax.Updater(\$('wake_shutdown_or_reboot_{$i}'),'ajax_lib.php?ip={$ip_machine}&nom={$nom_machine}&mode=wake_shutdown_or_reboot&wake={$wake}&shutdown_reboot={$shutdown_reboot}',{method: 'get'});\n\t//]]>\n</script>\n"; echo "<br />\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 "<p>Pour information, voici le contenu du fichier généré:<br />\n"; echo "<pre style='border:1px solid black; color:green;'>"; while (!feof($fich)) { $ligne = fgets($fich, 4096); echo htmlentities($ligne); } echo "</pre>\n"; fclose($fich); } else { echo "<p style='color:red;'>Il n'a pas été possible d'ouvrir le fichier /tftpboot/pxelinux.cfg/01-{$corrige_mac}</p>\n"; } } }