[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 # Auteur: Olivier Lacroix 3 # 4 ## $Id: italc_generate.sh 7061 2012-04-02 09:22:45Z dbo $ ## 5 # 6 ##### script generant les fichiers necessaires au deploiement d italc par wpkg sur les clients: xml + fichiers install.bat ##### 7 # 8 # sudoifie : il est lance a chaque modif sur les parcs par l interface 9 10 # A FAIRE : 11 # regler la position des fenetres pour chaque parc (pour une repartition sympa des l ouverture d italc) 12 13 if [ -e /var/se3/unattended/install/wpkg/packages.xml ]; then 14 # on teste la presence du paquet italc pour se3 (officiel) 15 TESTITALC="$(cat /var/se3/unattended/install/wpkg/packages.xml | grep "Italc SE3: surveillance, diffusion..." )" 16 if [ "$TESTITALC" == "" ]; then 17 echo "Le paquet italc n est pas installe : dans le menu applications windows, choisir ajouter une application, sur le forum : italc" 18 exit 0 19 fi 20 else 21 echo "Le module wpkg doit etre installe pour pouvoir utiliser ce programme." 22 exit 0 23 fi 24 25 if [ $# -ne 0 ]; then 26 echo "Ce script doit s executer sans argument." 27 exit 1 28 fi 29 30 # securite pour eviter plusieurs exec simultanees 31 if [ -e /tmp/italcgenerate ]; 32 then 33 echo "Script deja en cours d execution" 34 exit 1 35 fi 36 echo en cours > /tmp/italcgenerate 37 38 #initialisation des variables # 39 # Recuperation des parametres mysql 40 if [ -e /var/www/se3/includes/config.inc.php ]; then 41 dbhost=`cat /var/www/se3/includes/config.inc.php | grep "dbhost=" | cut -d = -f 2 |cut -d \" -f 2` 42 dbname=`cat /var/www/se3/includes/config.inc.php | grep "dbname=" | cut -d = -f 2 |cut -d \" -f 2` 43 dbuser=`cat /var/www/se3/includes/config.inc.php | grep "dbuser=" | cut -d = -f 2 |cut -d \" -f 2` 44 dbpass=`cat /var/www/se3/includes/config.inc.php | grep "dbpass=" | cut -d = -f 2 |cut -d \" -f 2` 45 else 46 echo "Fichier de conf inaccessible" 47 exit 1 48 fi 49 50 # Recuperation des params LDAP 51 BASEDN=`echo "SELECT value FROM params WHERE name='ldap_base_dn'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 52 if [ -z "$BASEDN" ]; then 53 echo "Impossible d'acceder au parametre BASEDN" 54 exit 1 55 fi 56 ADMINRDN=`echo "SELECT value FROM params WHERE name='adminRdn'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 57 if [ -z "$ADMINRDN" ]; then 58 echo "Impossible d'acceder au parametre ADMINRDN" 59 exit 1 60 fi 61 ADMINPW=`echo "SELECT value FROM params WHERE name='adminPw'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 62 if [ -z "$ADMINPW" ]; then 63 echo "Impossible d'acceder au parametre ADMINPW" 64 exit 1 65 fi 66 COMPUTERDN=`echo "SELECT value FROM params WHERE name='computersRdn'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 67 if [ -z "$COMPUTERDN" ]; then 68 echo "Impossible d'acceder au parametre COMPUTERDN" 69 exit 1 70 fi 71 PARCDN=`echo "SELECT value FROM params WHERE name='parcsRdn'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 72 if [ -z "$PARCDN" ]; then 73 echo "Impossible d'acceder au parametre PARCDN" 74 exit 1 75 fi 76 SMBVERSION=`echo "SELECT value FROM params WHERE name='smbversion'" | mysql -h $dbhost $dbname -u $dbuser -p$dbpass -N` 77 if [ -z "$SMBVERSION" ]; then 78 echo "Impossible d'acceder au parametre smbversion" 79 exit 1 80 fi 81 if [ ! "$SMBVERSION" = "samba3" ]; then 82 echo "Version de samba incorrecte." 83 exit 1 84 fi 85 86 REPITALC=/var/se3/unattended/install/italc_keys 87 mkdir -p $REPITALC 88 89 REPWPKG=/var/se3/unattended/install/packages/italc 90 GLOBALCONFIG=globalconfig.xml 91 92 mkdir -p /var/se3/Progs/ro/italc/ 93 PERSOCONFIG=/var/se3/Progs/ro/italc/personalconfig.xml 94 95 # on nettoie l ancienne liste des postes profs et eleves des diverses salles 96 rm $REPWPKG/postesprofs.txt 1 > /dev/null 2>&1 97 rm -R $REPWPKG/posteseleves 1 > /dev/null 2>&1 98 99 DOMAINSE3="`cat /etc/samba/smb.conf | grep workgroup | cut -d= -f2 | sed 's/ //g'`" 100 echo "$DOMAINSE3" > $REPWPKG/domaine.txt 101 NETBIOSSE3="`cat /etc/samba/smb.conf | grep 'netbios name' | cut -d= -f2 | sed 's/ //g'`" 102 103 # export IDUNIQ (ne fonctionne pas avec les boucles... variable non globale dans les deux while read A do..) 104 # j ecris sur le disque :-( 105 echo 1 > /tmp/IDUNIQ 106 107 QUALITE="`cat $REPWPKG/config_italc.txt | grep ^QUALITE | cut -d= -f2 | sed "s/\r//g"`" 108 UPDATEINTERVAL="`cat $REPWPKG/config_italc.txt | grep ^UPDATEINTERVAL | cut -d= -f2 | sed "s/\r//g"`" 109 MENUSCACHES="`cat $REPWPKG/config_italc.txt | grep ^MENUSCACHES | cut -d= -f2 | sed "s/\r//g"`" 110 111 echo "<?xml version=\"1.0\"?><!DOCTYPE italc-config-file><personalconfig version=\"1.0.9\" > <head> <globalsettings opened-tab=\"-1\" demoquality=\"$QUALITE\" icononlymode=\"0\" defaultdomain=\"$DOMAINSE3\" role=\"1\" client-update-interval=\"$UPDATEINTERVAL\" wincfg=\"AAAA/wAAAAD9AAAAAAAABAAAAAJ0AAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAEAAAAWAG0AYQBpAG4AdABvAG8AbABiAGEAcgEAAAAAAAAEAAAAAAAAAAAA\" notooltips=\"0\" win-height=\"682\" win-x=\"-4\" ismaximized=\"1\" win-y=\"-4\" clientdoubleclickaction=\"60\" win-width=\"1024\" showUserColumn=\"0\" toolbarcfg=\"$MENUSCACHES\" /> </head> <body>" > $PERSOCONFIG 112 113 ldapsearch -xLLL -b $PARCDN,$BASEDN | grep "dn: cn=" | cut -d, -f1 | cut -d= -f2 | while read B 114 do 115 IDUNIQ="$(cat /tmp/IDUNIQ)" 116 PARC="$B" 117 118 # on cherche le poste maitre de la salle 119 POSTEPROF="$(ldapsearch -xLLL cn=$PARC | grep description | cut -f2 -d" ")" 120 121 if [ "$POSTEPROF" != "" -a "$POSTEPROF" != "0" ] ; then 122 echo "$POSTEPROF" >> $REPWPKG/postesprofs.txt 123 124 echo 1 > /tmp/XPOS 125 echo 1 > /tmp/YPOS 126 127 # on genere les cles publiques et privees des postes profs 128 # regle d or du fichier install.bat: on conservera les clefs privees generees dans %Z%\packages\italc\postesprofs\%computername% 129 mkdir -p $REPITALC/postesprofs/$POSTEPROF/private/teacher 130 mkdir -p $REPITALC/postesprofs/$POSTEPROF/public/teacher 131 mkdir -p $REPWPKG/posteseleves 132 133 # on genere le debut du globalconfig.xml 134 echo "<?xml version=\"1.0\"?> <!DOCTYPE italc-config-file> <globalclientconfig version=\"1.0.9\" > <body>" > $REPITALC/postesprofs/$POSTEPROF/$GLOBALCONFIG 135 136 echo "<classroom name=\"$PARC\" >" >> $REPITALC/postesprofs/$POSTEPROF/$GLOBALCONFIG 137 echo "<classroom name=\"$PARC\" >" >> $PERSOCONFIG 138 139 # la fonction sed "s/\([^0-9]\)\([0-9]*$\)/\\1\t\\2/"|sort +1 -n|tr -d "\t" permet de classer les postes par ordre de numéro : n17p1 n17p2 n17p10 140 ldapsearch -xLLL cn=$PARC | grep $COMPUTERDN | grep member | cut -f1 -d, | cut -f2 -d= | sed "s/\([^0-9]\)\([0-9]*$\)/\\1\t\\2/"|sort -k 1 -n|tr -d "\t" | while read A 141 do 142 IDUNIQ="$(cat /tmp/IDUNIQ)" 143 XPOS="$(cat /tmp/XPOS)" 144 YPOS="$(cat /tmp/YPOS)" 145 POSTESPARC="$A" 146 MACADD="$(ldapsearch -xLLL -b cn=$POSTESPARC,$COMPUTERDN,$BASEDN | grep macAddress | cut -d" " -f2)" 147 echo "$POSTEPROF" > $REPWPKG/posteseleves/$POSTESPARC.txt 148 if [ "$POSTESPARC" != "$POSTEPROF" ]; then 149 150 if [ "$MACADD" != "" -a "$POSTESPARC" != "" ]; then 151 # on rajoute l entree du poste car on a tout 152 echo "<client hostname=\"$POSTESPARC:5950\" mac=\"$MACADD\" type=\"0\" id=\"$IDUNIQ\" name=\"$POSTESPARC\" />" >> $REPITALC/postesprofs/$POSTEPROF/$GLOBALCONFIG 153 echo "<client w=\"416\" x=\"$XPOS\" y=\"$YPOS\" h=\"312\" visible=\"yes\" id=\"$IDUNIQ\" />" >> $PERSOCONFIG 154 155 echo $(($XPOS + 23)) > /tmp/XPOS 156 echo $(($YPOS + 23)) > /tmp/YPOS 157 158 #~ else 159 #~ echo "Il manque un element pour $POSTESPARC : son ip ou son adresse mac" 160 fi 161 echo $(($IDUNIQ + 1)) > /tmp/IDUNIQ 162 #~ else 163 #~ echo "Le poste $POSTEPROF n est pas rajoute au xml : inutile de visualiser son propre ecran !" 164 fi 165 done 166 echo "</classroom>" >> $REPITALC/postesprofs/$POSTEPROF/$GLOBALCONFIG 167 echo "</classroom>" >> $PERSOCONFIG 168 # on finalise les xml 169 echo "</body></globalclientconfig>" >> $REPITALC/postesprofs/$POSTEPROF/$GLOBALCONFIG 170 171 #~ else 172 #~ echo "Pas de poste prof pour le parc $PARC" 173 fi 174 done 175 176 echo "</body></personalconfig>" >> $PERSOCONFIG 177 rm /tmp/IDUNIQ /tmp/XPOS /tmp/YPOS 178 179 # compatibilité permse3 : www-se3 est proprio de la branche unattended 180 # chown -R adminse3 $REPITALC 181 getent passwd adminse3 >/dev/null && setfacl -R -m u:adminse3:rwx -m d:u:adminse3:rwx $REPITALC 182 183 184 # on est oblige de copier le fichier personnalconfig.xml dans le script de login car la cle permettant de pointer sur un fichier personnalconfig.xml local ne fonctionne pas sur italc 1.0.9! 185 if [ ! -e /home/templates/profs ]; 186 then 187 mkdir -p /home/templates/profs 188 fi 189 if [ ! -e /home/templates/profs/logon.bat ]; 190 then 191 echo -e "rem Script de login des profs\r" > /home/templates/profs/logon.bat 192 fi 193 if [ "`cat /home/templates/profs/logon.bat | grep "personalconfig.xml"`" == "" ]; then 194 echo -e "@rem ajout pour italc\r" >> /home/templates/profs/logon.bat 195 echo -e "@if not exist %appdata%\\italc mkdir %appdata%\\italc\r" >> /home/templates/profs/logon.bat 196 echo -e "@copy /y \\\\\\\\$NETBIOSSE3\\Progs\\\ro\\italc\\personalconfig.xml %appdata%\\italc >NUL\r" >> /home/templates/profs/logon.bat 197 fi 198 if [ ! -e /home/templates/administratifs ]; 199 then 200 mkdir -p /home/templates/administratifs 201 fi 202 if [ ! -e /home/templates/administratifs/logon.bat ]; 203 then 204 echo -e "rem Script de login des administratifs\r" > /home/templates/administratifs/logon.bat 205 fi 206 if [ "`cat /home/templates/administratifs/logon.bat | grep "personalconfig.xml"`" == "" ]; then 207 echo -e "@rem ajout pour italc\r" >> /home/templates/administratifs/logon.bat 208 echo -e "@if not exist %appdata%\\italc mkdir %appdata%\\italc\r" >> /home/templates/administratifs/logon.bat 209 echo -e "@copy /y \\\\\\\\$NETBIOSSE3\\Progs\\\ro\\italc\\personalconfig.xml %appdata%\\italc >NUL\r" >> /home/templates/administratifs/logon.bat 210 fi 211 212 if [ -e /tmp/italcgenerate ]; 213 then 214 rm /tmp/italcgenerate 215 fi 216
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |