[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-wpkg/sources/scripts/ -> wsusoffline-download.sh (source)

   1  #!/bin/bash
   2  #
   3  #### Telechargement automatique des mises a jour wsusoffline en fonction du contenu de /var/se3/unattended/install/wsusoffline/UpdateGenerator.ini #####
   4  # 
   5  #  Auteur : Olivier Lacroix
   6  #
   7  #    mars 2012
   8  #    olivier-yves-cl.lacroix@ac-montpellier.fr
   9  #
  10  ## $Id: wsusoffline-download.sh 7121 2012-04-24 15:36:22Z olikin $ ##
  11  #
  12  
  13  
  14  # Mode debug "1" ou "0"
  15  DEBUG="1"
  16  
  17  ### on suppose que l'on est sous debian  ####
  18  WWWPATH="/var/www"
  19  ### version debian  ####
  20  script_charset="UTF8"
  21  
  22  . /usr/share/se3/includes/config.inc.sh -ml
  23  
  24  # parametre proxy a trouver dans se3db : pas trouve a part avec le .pac
  25  ipproxy=$(grep "http_proxy=" /etc/profile | head -n 1 | sed -e "s#.*//##;s/\"//")
  26  # ipproxy=$(/usr/share/se3/includes/config.inc.sh -cv | grep "proxy_url" | cut -d"/" -f3 | grep -v "proxy_url")
  27  
  28  PARAMS=/var/se3/unattended/install/wsusoffline/UpdateGenerator.ini
  29  
  30  CORRESPONDANCE()
  31  {
  32  OSLONG=$1
  33  PARAM=$2
  34  #echo "CORRESPONDANCE execute avec $SECTION $PARAM"
  35  [ "$OSLONG" == "Windows XP" ] && echo "wxp"
  36  [ "$OSLONG" == "Windows XP x64" ] && echo "wxp-x64"
  37  [ "$OSLONG" == "Windows Server 2003" ] && echo "w2k3"
  38  [ "$OSLONG" == "Windows Server 2003 x64" ] && echo "w2k3-x64"
  39  [ "$OSLONG" == "Windows Vista" ] && echo "w60"
  40  [ "$OSLONG" == "Windows Vista x64" ] && echo "w60-x64"
  41  [ "$OSLONG" == "Windows 7" ] && echo "w61"
  42  [ "$OSLONG" == "Windows 7 x64" ] && echo "w61-x64"
  43  # A FAIRE : il faut trouver l'argument pour Windows 2008 server.
  44  #[ "$OSLONG" == "Windows Server 2008 R2" ] && echo "w"
  45  #echo "OtherSection"
  46  }
  47  
  48  MAIL=/tmp/wsusofflinemail
  49  [ -e $MAIL ] && rm -f $MAIL
  50  
  51  SENDMAIL()
  52  {
  53      [ ! -e $MAIL ] && echo "Pas de mail a envoyer" && exit 0
  54      OBJET=$1
  55      echo "ENVOI DU MAIL SUIVANT A ADMIN :"
  56      cat $MAIL
  57      echo "OBJET :"
  58      echo "$OBJET"
  59      mail root -s"$OBJET" < $MAIL
  60      #rm -f $MAIL
  61  }
  62  
  63  if [ $# -ne 0 ]; then
  64      echo "Script a executer sans argument."
  65      exit 0
  66  fi
  67  
  68  TESTFREESPACE()
  69  {
  70      PART=`df | grep "/var/se3\$" | sed -e "s/ .*//"`
  71      PART_SIZE=$(df -m $PARTROOT | awk  '/se3/ {print $4}')
  72      if [ "$PART_SIZE" -le 1000 ]; then
  73          echo "La partition /var/se3 a moins de 1 Go disponible, c'est insuffisant pour telecharger de nouvelles mises a jour.">$MAIL
  74          echo "Merci de liberer de l'espace sur cette partition. Des que cela sera effectue, les mises a jour reprendront automatiquement, tous les soirs.">>$MAIL
  75          SENDMAIL "ERREUR WSUSOFFLINE : Place insuffisante sur la partition /var/se3."
  76          exit 1
  77      fi
  78  }
  79  
  80  TESTFREESPACE
  81  
  82  ########### telechargement de la derniere version de wsusoffline si un fichier tag a change sur le svn. ##########
  83  [ -e /var/se3/unattended/install/wsusoffline.zip ] && rm -f /var/se3/unattended/install/wsusoffline.zip
  84  
  85  WSUSOFFLINEROOT=http://svn.tice.ac-caen.fr/svn/SambaEdu3/wpkg-packages/files/wsusoffline
  86  TEMOIN=/var/se3/unattended/install/wsusoffline/version.txt
  87  NEWTEMOIN=/tmp/wsusofflineversion.txt
  88  wget -O $NEWTEMOIN $WSUSOFFLINEROOT/version.txt >/dev/null 2>&1
  89  SIZEFILE=`ls -la $NEWTEMOIN | awk '{print $5}'` >/dev/null 2>&1
  90  if [ "$SIZEFILE" == "0" -o "$SIZEFILE" == "" ]; then
  91      echo "Le telechargement de $WSUSOFFLINEROOT/version.txt a echoue. Le proxy est peut etre mal parametre sur le serveur">$MAIL
  92      echo "Taille du fichier $NEWTEMOIN: $SIZEFILE">>$MAIL
  93      SENDMAIL "ERREUR WSUSOFFLINE : Impossible de verifier si une mise a jour est disponible.."
  94      exit 1
  95  fi
  96  [ -e $NEWTEMOIN ] && TESTNEWTEMOIN=$(md5sum $NEWTEMOIN | cut -d" " -f1)
  97  [ -e $TEMOIN ] && TESTTEMOIN=$(md5sum $TEMOIN | cut -d" " -f1)
  98  
  99  #echo "temoin $TESTTEMOIN et newtemoin :$TESTNEWTEMOIN"
 100  if [ "$TESTTEMOIN" == "$TESTNEWTEMOIN" ]; then
 101      echo "La version de wsusoffline presente est identique a celle du svn."
 102  else
 103      echo "Une nouvelle version de wsusoffline est disponible sur le svn. Veuillez patienter."
 104      echo "Sauf 'ERREUR' signalee dans l'objet, ce mail est envoye a titre d'information et, dans ce cas, aucune action de votre part n'est necessaire...">$MAIL
 105      echo "">>$MAIL
 106      echo "Une nouvelle version de wsusoffline est disponible sur le svn.">>$MAIL
 107      echo "">>$MAIL
 108      echo "Debut du telechargement.">>$MAIL
 109      wget $WSUSOFFLINEROOT/wsusoffline.zip -O /var/se3/unattended/install/wsusoffline.zip >>$MAIL 2>&1
 110      if [ -e /var/se3/unattended/install/wsusoffline.zip ]; then
 111          SIZEFILE=`ls -la /var/se3/unattended/install/wsusoffline.zip | awk '{print $5}'`
 112      else
 113          SIZEFILE="0"
 114      fi
 115      #echo "SIZEFILE=$SIZEFILE"
 116      if [ ! "$SIZEFILE" == "0" ]; then
 117          echo "Telechargement accompli.">>$MAIL
 118          echo "Tentative de decompression vers /var/se3/unattended/install.">>$MAIL
 119          if ( ! unzip -o /var/se3/unattended/install/wsusoffline.zip -d /var/se3/unattended/install/ 2>>$MAIL 1>/dev/null ) ; then
 120              echo "Erreur unzip -o /var/se3/unattended/install/wsusoffline.zip" >>$MAIL
 121              SENDMAIL "ERREUR : une nouvelle version de wsusoffline est disponible mais la decompression du fichier telecharge a echoue."
 122              exit 1
 123          else
 124              echo "Fin de la decompression.">>$MAIL
 125              rm -f /var/se3/unattended/install/wsusoffline.zip
 126              echo "Reglage des droits sur les fichiers wsusoffline.">>$MAIL
 127              chmod -R ug+rwx /var/se3/unattended/install/wsusoffline >>$MAIL
 128              chown -R admin:admins /var/se3/unattended/install/wsusoffline >>$MAIL
 129              SENDMAIL "Information : une nouvelle version de wsusoffline a ete telechargee automatiquement afin de proteger au mieux vos pc sous windows."
 130              # tout a reussi, on remplace le fichier temoin
 131              [ -e $TEMOIN ] && rm -f $TEMOIN
 132              mv $NEWTEMOIN $TEMOIN
 133          fi
 134      else
 135          echo "Fichier $WSUSOFFLINEROOT/wsusoffline.zip absent ou vide : le telechargement a echoue.">>$MAIL
 136          SENDMAIL "ERREUR : une nouvelle version de wsusoffline est disponible mais le telechargement a echoue."
 137          exit 1
 138      fi
 139  fi
 140  
 141  
 142  ####### Utilisation du fichier ini renseigné par l'admin et de DownloadUpdates.sh pour recuperer les mises a jour #########
 143  [ ! -e $PARAMS ] && "echo Fichier $PARAMS absent." && exit 0
 144  echo "Analyse du fichier $PARAMS."
 145  
 146  echo "Debut du telechargement des mises a jour microsoft : $date.">$MAIL
 147  
 148  cat $PARAMS | while read line
 149  do
 150      if [ "`echo $line | grep -E "^\[" | grep -E "\]"`" == "" ]; then
 151          #[ "$DEBUG" == "1" ] && echo "Ce n'est pas le debut d'une section : $line"
 152          PARAMETRE=`echo "$line" | cut -f1 -d "="`
 153          VALEUR=`echo "$line" | cut -f2 -d "="`
 154          if [ ! "`echo "$VALEUR" | grep "Enabled"`" == "" ]; then
 155              #echo "OS=CORRESPONDANCE $SECTION $PARAMETRE"
 156              OS=`CORRESPONDANCE "$SECTION" "$PARAMETRE"`
 157              [ "$OS" == "" ] && OS="OtherSection"
 158              #echo "nom court de l'OS : $OS"
 159              # si l'os est office ou options ou autre micellianous : alors gerer le cas en evitant de passer des mauvais arguments.
 160              if [ "$PARAMETRE" == "glb" ]; then
 161                  # glb : global ou fra a passer en parametre ?...
 162                  LANG="fra"
 163              else
 164                  LANG=$PARAMETRE
 165              fi
 166              if [ "$ipproxy" == "" ]; then
 167                  PROXY=""
 168              else
 169                  PROXY="/proxy http://$ipproxy"
 170              fi
 171              if [ ! "$OS" == "OtherSection" ]; then
 172                  #echo "Section ignoree : $SECTION."
 173              #else
 174                  echo "Dans la section $SECTION, un parametre est active : $PARAMETRE = $VALEUR"
 175                  echo "Telechargement des mises a jour pour l'OS $OS et la langue $LANG..."
 176                  echo "/var/se3/unattended/install/wsusoffline/sh/DownloadUpdates.sh $OS $LANG /msse $PROXY" >>$MAIL
 177                  TESTFREESPACE
 178                  /var/se3/unattended/install/wsusoffline/sh/DownloadUpdates.sh $OS $LANG /msse $PROXY >>$MAIL 2>&1
 179              fi
 180          fi
 181      else
 182          #[ "$DEBUG" == "1" ] && echo "C'est le debut d'une section : $line"
 183          SECTION=`echo "$line" | cut -f2 -d "[" | cut -f1 -d "]"`
 184          #[ "$DEBUG" == "1" ] && echo "Section : $SECTION"
 185      fi
 186  done
 187  
 188  # Envoi d'un mail a l'admin en cas de nouvelles mises a jour trouvees.
 189  TEST=`cat $MAIL | grep "successfully downloaded"`
 190  if [ ! "$TEST" == "" ]; then
 191      SENDMAIL "[Module se3-wpkg : telechargement des mises a jour microsoft par wsusoffline]"
 192  else
 193      echo "Pas de nouvelle mise a jour telechargee. Pas d'envoi de mail a l'admin."
 194      #[ -e $MAIL ] && rm -f $MAIL
 195  fi
 196  
 197  
 198  


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