[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/usr/share/se3/scripts/ -> italc_generate.sh (source)

   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  


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1