\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);
if(!isset($validation_parametres)) {
echo "Paramétrage du lancement de l'installation
\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 installer XP..
\n";
echo "Retour au choix du/des parc(s).
\n";
include ("pdp.inc.php");
exit();
}
echo "\n";
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 "- Pour que l'opération 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 du lancement de l'installation XP unattended
\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
//=========================
// Partitionnement
$fdisk_cmds=isset($_POST['fdisk_cmds']) ? $_POST['fdisk_cmds'] : 0;
$replace_mbr=isset($_POST['replace_mbr']) ? $_POST['replace_mbr'] : 0;
//=========================
//=========================
// Mises à jour
$DisableDynamicUpdates=isset($_POST['DisableDynamicUpdates']) ? $_POST['DisableDynamicUpdates'] : "no";
$AutomaticUpdates=isset($_POST['AutomaticUpdates']) ? $_POST['AutomaticUpdates'] : 'yes';
//=========================
//=========================
// Composants W$
$accessopt=isset($_POST['accessopt']) ? $_POST['accessopt'] : 'on';
$calc=isset($_POST['calc']) ? $_POST['calc'] : 'on';
$charmap=isset($_POST['charmap']) ? $_POST['charmap'] : 'on';
$chat=isset($_POST['chat']) ? $_POST['chat'] : 'on';
$deskpaper=isset($_POST['deskpaper']) ? $_POST['deskpaper'] : 'off';
$hypertrm=isset($_POST['hypertrm']) ? $_POST['hypertrm'] : 'on';
$iisdbg=isset($_POST['iisdbg']) ? $_POST['iisdbg'] : 'off';
$indexsrv_system=isset($_POST['indexsrv_system']) ? $_POST['indexsrv_system'] : 'off';
$media_clips=isset($_POST['media_clips']) ? $_POST['media_clips'] : 'off';
$media_utopia=isset($_POST['media_utopia']) ? $_POST['media_utopia'] : 'off';
$mousepoint=isset($_POST['mousepoint']) ? $_POST['mousepoint'] : 'off';
$mplay=isset($_POST['mplay']) ? $_POST['mplay'] : 'off';
$mswordpad=isset($_POST['mswordpad']) ? $_POST['mswordpad'] : 'on';
$paint=isset($_POST['paint']) ? $_POST['paint'] : 'on';
$rec=isset($_POST['rec']) ? $_POST['rec'] : 'on';
$vol=isset($_POST['vol']) ? $_POST['vol'] : 'on';
$IEAccess=isset($_POST['IEAccess']) ? $_POST['IEAccess'] : 'on';
$msnexplr=isset($_POST['msnexplr']) ? $_POST['msnexplr'] : 'off';
$msmsgs=isset($_POST['msmsgs']) ? $_POST['msmsgs'] : 'off';
// Jeux
$freecell=isset($_POST['freecell']) ? $_POST['freecell'] : 'off';
$hearts=isset($_POST['hearts']) ? $_POST['hearts'] : 'off';
$minesweeper=isset($_POST['minesweeper']) ? $_POST['minesweeper'] : 'off';
$pinball=isset($_POST['pinball']) ? $_POST['pinball'] : 'off';
$solitaire=isset($_POST['solitaire']) ? $_POST['solitaire'] : 'off';
$spider=isset($_POST['spider']) ? $_POST['spider'] : 'off';
$zonegames=isset($_POST['zonegames']) ? $_POST['zonegames'] : 'off';
$firewall=isset($_POST['firewall']) ? $_POST['firewall'] : 1;
// Contrôler les valeurs: on/off, 0/1
//=========================
//=========================
// Display:
$BitsPerPel=isset($_POST['BitsPerPel']) ? $_POST['BitsPerPel'] : 16;
if(($BitsPerPel!=16)&&($BitsPerPel!=32)) {$BitsPerPel=16;}
$Xresolution=isset($_POST['Xresolution']) ? $_POST['Xresolution'] : 1024;
if(($Xresolution!=800)&&($Xresolution!=1024)&&($Xresolution!=1280)) {$Xresolution=1024;}
if($Xresolution=800) {$Yresolution=600;}
elseif($Xresolution=1024) {$Yresolution=768;}
elseif($Xresolution=1280) {$Yresolution=800;}
//=========================
//=========================
// Serveur TFTP
$dhcp_tftp_server=$_SERVER["SERVER_ADDR"];
$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?
}
//=========================
//=========================
// Serveur de temps NTP
$dhcp_ntp="91.121.73.63";
/*
$ host fr.pool.ntp.org
fr.pool.ntp.org has address 91.121.73.63
fr.pool.ntp.org has address 81.25.192.148
fr.pool.ntp.org has address 87.98.146.16
fr.pool.ntp.org has address 88.191.23.205
fr.pool.ntp.org has address 88.178.32.159
*/
$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?
}
//=========================
//=========================
// M$IE
$Home_Page="http://www.mozilla.com/en-US/";
$sql="select valeur from corresp where chemin='HKEY_CURRENT_USER\\software\\microsoft\\Internet Explorer\\Main\\Start Page';";
$res=mysql_query($sql);
if(mysql_num_rows($res)>0) {
$lig=mysql_fetch_object($res);
if($lig->value!="") {$Home_Page=$lig->valeur;}
}
$Help_Page="http://www.mozilla.com/en-US/";
$Search_Page="http://www.google.fr/firefox";
//=========================
echo "";
/*
for ($i=0;$i\n";
$dossier_unattend_txt="/var/se3/unattended/install/site/$parc[$i]";
if(!file_exists($dossier_unattend_txt)) {mkdir($dossier_unattend_txt);}
$fu=fopen("$dossier_unattend_txt/unattend.txt","w+");
if(!$fu) {
echo "
ERREUR lors de la création de $dossier_unattend_txt/unattend.txt
\n";
include ("pdp.inc.php");
die();
}
*/
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 {
$lig=mysql_fetch_object($res);
//$mac_machine=$lig->mac;
$nom_machine=$lig->name;
$dossier_unattend_txt="/var/se3/unattended/install/site/";
if(!file_exists($dossier_unattend_txt)) {mkdir($dossier_unattend_txt);}
$fu=fopen("$dossier_unattend_txt/$nom_machine.txt","w+");
if(!$fu) {
echo "ERREUR lors de la création de $dossier_unattend_txt/$nom_machine.txt
\n";
include ("pdp.inc.php");
die();
}
fwrite($fu,"[GuiUnattended]\r
; Fichier genere automatiquement par se3 pour $nom_machine \r
; ne pas modifier \r
; \r
TimeZone=105\r
OEMSkipRegional=1\r
OemSkipWelcome=1\r
EncryptedAdminPassword=No\r
AutoLogon=Yes\r
\r
[Unattended]\r
UnattendMode=FullUnattended\r
FileSystem=ConvertNTFS\r
ExtendOemPartition=1\r
OemSkipEula=Yes\r
OemPreinstall=Yes\r
AutomaticUpdates=$AutomaticUpdates\r
OemPnpDriversPath=\\D\r
TargetPath=\"\\WINDOWS\"\r
AutoActivate=Yes\r
DisableDynamicUpdates=$DisableDynamicUpdates\r
; Needed for XP - see .\r
UnattendSwitch=Yes\r
DriverSigningPolicy=Ignore\r
Hibernation=No\r
NtUpgrade=No\r
Win9xUpgrade=No\r
\r
[Display]\r
BitsPerPel=$BitsPerPel\r
Xresolution=$Xresolution\r
YResolution=$Yresolution\r
Vrefresh=60\r
\r
[URL]\r
Home_Page=\"$Home_Page\"\r
Help_Page=\"$Help_Page\"\r
Search_Page=\"$Search_Page\"\r
\r
[Proxy]\r
; le proxy est inactif par defaut : l admin l'active via les clefs si besoin\r
Proxy_Enable=0\r
Use_Same_Proxy=1\r
\r
[Networking]\r
InstallDefaultComponents=Yes\r
\r
[NetOptionalComponents]\r
; Install Print Services for UNIX\r
LPDSVC=1\r
\r
[_meta]\r
ntinstall_cmd = \"nt5x-install\"\r
fdisk_lba=1\r
fdisk_confirm=0\r
edit_files=0\r
middle=\"\"\r
bottom=\"\"\r
local_admins=\"\"\r\n");
if($fdisk_cmds==0) {
fwrite($fu,"fdisk_cmds=\"fdisk /clear 1;fdisk /pri:8000;fdisk /activate:1\"\r\n");
fwrite($fu,"format_cmd=\"format /y /z:seriously /q /u /a /v: c:\"\r\n");
}
elseif($fdisk_cmds==1) {
fwrite($fu,";fdisk_cmds=\"echo On ne modifie pas les partitions; installation sur la premiere partition principale\"\r\n");
fwrite($fu,"format_cmd=\"format /y /z:seriously /q /u /a /v: c:\"\r\n");
}
elseif($fdisk_cmds==2) {
fwrite($fu,";fdisk_cmds=\"echo On ne modifie pas les partitions; installation sur la deuxieme partition principale\"\r\n");
fwrite($fu,"format_cmd=\"format /y /z:seriously /q /u /a /v: d:\"\r\n");
}
fwrite($fu,"replace_mbr=$replace_mbr\r
local_admins=\"\"\r
ntp_servers=\"$dhcp_ntp\"\r
z_path=\"\\\\$dhcp_tftp_server\\install\"\r
netlogon_dir=\"\\\\$se3ip\\netlogon\\domscripts\"\r
autolog=\"autolog.pl --logon=1 --user=administrateur --password=wawa\"\r
\r
[RegionalSettings]\r
; In french in the text\r
LanguageGroup=1\r
SystemLocale=0000040c\r
UserLocale=0000040c\r
InputLocale=040c:0000040c\r
\r
[Branding]\r
BrandIEUsingUnattended=Yes\r
\r
[Components]\r
accessopt=$accessopt\r
calc=$calc\r
charmap=$charmap\r
chat=$chat\r
deskpaper=$deskpaper\r
hypertrm=$hypertrm\r
iisdbg=$iisdbg\r
indexsrv_system=$indexsrv_system\r
media_clips=$media_clips\r
media_utopia=$media_utopia\r
mousepoint=$mousepoint\r
mplay=$mplay\r
mswordpad=$mswordpad\r
paint=$paint\r
rec=$rec\r
vol=$vol\r
; Jeux\r
freecell=$freecell\r
hearts=$hearts\r
minesweeper=$minesweeper\r
pinball=$pinball\r
solitaire=$solitaire\r
spider=$spider\r
zonegames=$zonegames\r
IEAccess=$IEAccess\r
msnexplr=$msnexplr\r
\r
hearts=off\r
IEAccess=off\r
\r
; Install IIS by default\r
iis_common=Off\r
iis_inetmgr=Off\r
iis_www=off\r
; Docs suggest iis_pwmgr only works on Win2k, but include it\r
; anyway\r
iis_pwmgr=Off\r
; Include docs\r
iis_doc=Off\r
\r\n");
if($firewall==1) {
fwrite($fu,"[WindowsFirewall]\r
Profiles=WindowsFirewall.TurnOffFirewall\r
\r
[WindowsFirewall.TurnOffFirewall]\r
Mode=0\r\n");
}
else {
fwrite($fu,"[WindowsFirewall]\r
Profiles=WindowsFirewall.TurnOnFirewall\r
\r
[WindowsFirewall.TurnOnFirewall]\r
Mode=1\r\n");
}
fclose($fu);
}
}
echo "Génération des fichiers dans /tftpboot/pxelinux.cfg/ pour l'installation XP unattended.
\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";
$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;
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 'unattend_xp' '$corrige_mac' '$ip_machine' '$nom_machine'", $retour);
// patch devenu inutile car integre a pxe_gen_cfg.sh
// patch pour lancer unattended-generate.sh lorsque l'on personnalise les unattend.txt
//$nomscript=date(Y_m_d_H_i_s");
//$nomscript="tmp_unattended_$nomscript.sh";
//system("echo \"#!/bin/bash\n\" > /tmp/$nomscript");
//chmod ("/tmp/$nomscript",0700);
//system("echo \"sudo /usr/share/se3/scripts/unattended_generate.sh\n\" >> /tmp/$nomscript");
//system("echo \"rm -f /tmp/$nomscript \n\" >> /tmp/$nomscript");
//exec("at -f /tmp/$nomscript now + 1 minute");
// fin du patch pour lancer unattended-generate.sh
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='unattend_xp',
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");
?>