[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 # 3 # Configuration des applis contenue dans appli.xml 4 # avec téléchargement des fichiers nécessaires à l'installation 5 # et gestion des dépendances entre applications 6 # 7 # Syntaxe : installPackage.sh appli.xml NoDownload 8 # appli.xml doit être dans $wpkgroot/tmp/ 9 # 10 ## $id$ ## 11 12 Erreur="0" 13 wpkgroot="/var/se3/unattended/install/wpkg" 14 wpkgwww="/var/www/se3/wpkg" 15 Z="/var/se3/unattended/install" 16 17 function Download () { 18 local url="$1" 19 local destFile="$2" 20 local MD5="$3" 21 local pasDeDownload="$4" 22 # $Appli est défini avec l'id de l'Appli 23 echo "" 24 25 if [ "$pasDeDownload" == "1" ]; then 26 if [ -e "$Z/$destFile" ]; then 27 echo -e " Le fichier '$Z/$destFile' est présent.\n" 28 PassMD5="1" 29 if [ "$MD5" != "" ]; then 30 if ( md5sum "$Z/$destFile" | grep $MD5 ) ; then 31 echo -e "Le fichier présent est valide (MD5=$MD5).\n"; 32 else 33 md5sum "$Z/$destFile" 34 echo -e " Erreur : le test md5sum ($MD5) a échoué.\n" 35 ErreurApp="13" 36 PassMD5="0" 37 fi 38 fi 39 else 40 echo " Erreur : Le fichier '$Z/$destFile' est absent." 41 if [ "$url" != "" ] ; then 42 echo " Vous avez refusé le téléchargement automatique, l'application ne peut pas être installée." 43 echo " Vous auriez dû télécharger ce fichier depuis l'adresse : </pre><a href='$url'>$url</a><pre>" 44 fi 45 ErreurApp="7" 46 fi 47 else 48 if [ "$url" == "" ]; then 49 if [ -e "$Z/$destFile" ]; then 50 echo -e "Présence du fichier $Z/$destFile : OK.\n" 51 else 52 echo -e "Erreur : Le fichier $Z/$destFile est absent et l'url de téléchargement n'est pas définie.\n\n" 53 ErreurApp="8" 54 fi 55 else 56 if [ -e "$Z/$destFile" ]; then 57 if [ "$MD5" != "" ]; then 58 if ( md5sum "$Z/$destFile" | grep $MD5 ) ; then 59 echo -e "Pas de téléchargement de '$destFile' : il est déjà présent et valide (MD5=$MD5).\n"; 60 pasDeDownload=1 61 else 62 echo -e "Une ancienne version du fichier $destFile existait déjà. Il va être mis à jour.\n" 63 fi 64 fi 65 fi 66 if [ "$pasDeDownload" != "1" ]; then 67 echo -e "Téléchargement de '$url'.\n" 68 destDir="`dirname \"$Z/$destFile\"`" 69 fileName="`basename \"$destFile\"`" 70 mkdir -p "$destDir" 71 if [ ! -d "$destDir" ]; then 72 echo -e "Erreur de création du répertoire '$destDir'.\n" 73 ErreurApp="9" 74 else 75 # Le fichier est d'abord téléchargé dans $wpkgroot/tmp 76 # puis si c'est OK, déplacé dans $Z/$destFile (avec écrasement éventuel d'une ancienne version de ce fichier) 77 if ( ! /usr/bin/wget --progress=dot -O "$fileName" "$url" 2>&1 ); then 78 echo -e " Erreur de téléchargement de $url\n"; 79 ErreurApp="12" 80 else 81 PassMD5="1" 82 if [ "$MD5" != "" ]; then 83 if ( md5sum "$fileName" | grep $MD5 ) ; then 84 echo -e "\nLe fichier téléchargé est valide (MD5=$MD5).\n"; 85 else 86 md5sum "$fileName" 87 echo -e " Erreur : le test md5sum ($MD5) a échoué.\n" 88 ErreurApp="13" 89 PassMD5="0" 90 fi 91 fi 92 if [ "$PassMD5" == "1" ] ; then 93 if ( mv "$fileName" "$Z/$destFile" ) ;then 94 echo -e " sauvegardé dans '$Z/$destFile'.\n" 95 else 96 echo -e " Erreur $? : mv '$fileName' '$Z/$destFile'.\n" 97 ErreurApp="14" 98 fi 99 fi 100 fi 101 fi 102 fi 103 fi 104 fi 105 if [ "$Erreur" == "0" ] ; then 106 Erreur="$ErreurApp" 107 fi 108 } 109 110 function TestDepends() { 111 Appli="$1" 112 BashDepends="$wpkgroot/tmp/$Appli.depends.sh" 113 if ( xsltproc -o "$BashDepends" --stringparam Appli "$Appli" "$wpkgwww/bin/testPackageDepends.xsl" "$wpkgroot/tmp/$appliXml" 2>&1 ) ; then 114 source "$BashDepends" 115 else 116 echo "Erreur $? xsltproc -o '$BashDepends' --stringparam Appli '$Appli' '$wpkgwww/bin/testPackageDepends.xsl' '$wpkgroot/tmp/$appliXml'<br>" 117 Erreur="10" 118 fi 119 if [ -e "$BashDepends" ] ; then 120 rm "$BashDepends" 121 fi 122 } 123 124 function AddApplication () { 125 Appli="$1" 126 echo "</pre>" 127 echo "<h2>Ajout de '$Appli' aux applications disponibles.</h2>" 128 if ( xsltproc -o "$wpkgroot/packages.xml" --stringparam Appli "$Appli" "$wpkgwww/bin/mergePackage.xsl" "$wpkgroot/tmp/$appliXml" 2>&1 ) ; then 129 installationsTimeStamp "$Appli" 130 echo "<br>L'application <b>$Appli</b> est maintenant disponible pour le déploiement.<br>" 131 InstalledPackage=$(( $InstalledPackage + 1 )) 132 else 133 echo "<br>Erreur $? lors de l'ajout de l'application <b>$Appli</b> :<br>" 134 echo "xsltproc -o '$wpkgroot/packages.xml' --stringparam Appli '$Appli' '$wpkgwww/bin/mergePackage.xsl' '$wpkgroot/tmp/$appliXml'<br>" 135 Erreur="10" 136 fi 137 echo "<pre>" 138 } 139 140 function installationsTimeStamp() { 141 Appli=$1 142 # $appliXml 143 TimeStamp=`date --iso-8601='seconds'` 144 # $md5Xml 145 timeStampsXml="/var/se3/unattended/install/wpkg/tmp/timeStamps.xml" 146 if [ ! -e "$timeStampsXml" ] ; then 147 echo '<installations />' > "$timeStampsXml" 148 fi 149 xsltproc --output "$timeStampsXml" --stringparam op add --stringparam Appli "$Appli" --stringparam AppliXml "$appliXml" --stringparam TimeStamp "`date --iso-8601='seconds'`" --stringparam md5sum "$md5Xml" --stringparam user "$login" /var/www/se3/wpkg/bin/timeStampAddPackages.xsl "$timeStampsXml" 150 } 151 152 cd $wpkgroot/tmp 153 InstalledPackage=0 154 nPackage=0 155 if [ "$4" == "" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ] ; then 156 echo " Téléchargement des fichiers nécessaires à l'installation d'une appli." 157 echo "" 158 echo "Syntaxe : installPackage.sh appli.xml NoDownload login urlMD5 ignoreMD5" 159 else 160 appliXml="`basename \"$1\"`"; 161 NoDownload="$2"; 162 login="$3"; 163 urlMD5="$4"; 164 ignoreMD5="$5"; 165 echo "<pre>" 166 #echo "urlMD5=$urlMD5"; 167 #echo "ignoreMD5=$ignoreMD5"; 168 if [ -e "$appliXml" ]; then 169 md5Xml="`md5sum "$appliXml" |gawk '{print $1;exit}'`" 170 bashFile="$wpkgroot/tmp/$appliXml.$$.sh" 171 if [ "$urlMD5" != "" ] && [ "$ignoreMD5" != "1" ] ; then 172 controlMD5="`basename \"$urlMD5\"`"; 173 else 174 controlMD5=""; 175 fi 176 if ( xsltproc --output "$bashFile" --stringparam AppliXML "$appliXml" --stringparam md5Xml "$md5Xml" --stringparam controlMD5 "$controlMD5" --stringparam NoDownload "$NoDownload" "$wpkgwww/bin/installPackage.xsl" "$appliXml" 2>&1 ) ; then 177 # cat "$bashFile"; 178 cd $Z 179 source "$bashFile" 180 cd - >/dev/null 181 else 182 echo -e "Erreur $? : xsltproc --output '$bashFile' --stringparam AppliXML '$appliXml' --stringparam md5Xml '$md5Xml' --stringparam controlMD5 '$controlMD5' --stringparam NoDownload '$NoDownload' '$wpkgwww/bin/installPackage.xsl' '$appliXml'\n"; 183 Erreur="2" 184 fi 185 if [ -e "$bashFile" ] ; then 186 rm "$bashFile" 187 fi 188 else 189 echo -e "Le fichier xml : '$wpkgroot/$appliXml' n'existe pas !\n" 190 Erreur="1" 191 fi 192 echo "</pre>" 193 fi 194 cd - >/dev/null 195 if [ "$InstalledPackage" == "0" ] ; then 196 if [ "$Erreur" != "3" ] ; then 197 echo "Aucune application installée sur <b>$nPackage</b> que contenait <b>$appliXml</b>.<br>" 198 fi 199 else 200 if [ "$InstalledPackage" == "1" ] ; then 201 echo "<b>$InstalledPackage</b> application installée sur <b>$nPackage</b> que contenait <b>$appliXml</b>.<br>" 202 else 203 echo "<b>$InstalledPackage</b> applications installées sur <b>$nPackage</b> que contenait <b>$appliXml</b>.<br>" 204 fi 205 fi 206 echo "<br/>"; 207 exit $Erreur
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 |