[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 #!/bin/bash 2 # 3 ## $Id: install_se3-module.sh 8091 2014-03-29 21:54:37Z keyser $ ## 4 # 5 ##### Permet d'installer un paquet module se3##### 6 ### franck.molle@ac-rouen.fr 7 8 9 function usage { 10 echo "usage: $0 -a -d -h -i -r module" 11 echo " -a : activation module" 12 echo " -d : desactivation module" 13 echo " -i : install module" 14 echo " -h : show this help" 15 echo " -r : remove module" 16 echo " ex.: $0 -i se3-dhcp" 17 exit $1; 18 } 19 20 while getopts ":adihr" cmd 21 do 22 case $cmd in 23 a) activate=1 ;; 24 d) desactivate=1;; 25 i) install=1 ;; 26 r) remove=1 ;; 27 h) usage 0 ;; 28 ?) echo "bad option!" 29 usage 1 ;; 30 esac 31 done 32 33 # remise a zero compteur pour avoir le module en $1 34 shift $(($OPTIND-1)) 35 36 37 SE3MODULE="$1" 38 M2="$2" 39 M3="$3" 40 41 . /etc/se3/config_m.cache.sh 42 . /etc/se3/config_l.cache.sh 43 44 if [ "$1" = "--help" -o "$1" = "" -o "$1" = "-h" ] 45 then 46 echo "Script permettant l'installion ou l'activation de $SE3MODULE" 47 echo "Usage : passer le nom du module a installer en option" 48 exit 1 49 fi 50 51 LADATE=$(date +%d-%m-%Y) 52 echo "Nous sommes le $LADATE" 53 REPORT_FILE="/var/log/se3/$SE3MODULE}_install_$LADATE.log" 2>&1 54 echo "" > $REPORT_FILE 2>&1 55 ### mode auto : on rend debconf silencieux ### 56 DEBIAN_PRIORITY="critical" 57 DEBIAN_FRONTEND="noninteractive" 58 export DEBIAN_FRONTEND 59 export DEBIAN_PRIORITY 60 61 opt="--allow-unauthenticated" 62 63 64 [ -z "$LC_ALL" ] && LC_ALL=C && export LC_ALL=C 65 66 67 #debug="-s" 68 echo "<pre>" 69 . /etc/profile 2>/dev/null 70 MAIL_REPORT() 71 { 72 [ -e /etc/ssmtp/ssmtp.conf ] && MAIL_ADMIN=$(cat /etc/ssmtp/ssmtp.conf | grep root | cut -d= -f2) 73 if [ ! -z "$MAIL_ADMIN" ]; then 74 REPORT=$(cat $REPORT_FILE | sed -e "s/$xppass/XXXXXX/g") 75 #cat $REPORT_FILE 76 #On envoie un mail a l'admin 77 echo "$REPORT" | mail -s "[SE3] Resultat de $0" $MAIL_ADMIN 78 fi 79 } 80 81 82 WWWPATH="/var/www" 83 if [ -e $WWWPATH/se3/includes/config.inc.php ]; then 84 dbhost=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbhost=" | cut -d = -f 2 |cut -d \" -f 2` 85 dbname=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbname=" | cut -d = -f 2 |cut -d \" -f 2` 86 dbuser=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbuser=" | cut -d = -f 2 |cut -d \" -f 2` 87 dbpass=`cat $WWWPATH/se3/includes/config.inc.php | grep "dbpass=" | cut -d = -f 2 |cut -d \" -f 2` 88 else 89 echo -e "$COLERREUR" 90 echo "Fichier de configuration $WWWPATH/se3/includes/config.inc.php inaccessible." | tee -a $REPORT_FILE 91 echo "Le script ne peut se poursuivre." | tee -a $REPORT_FILE 92 MAIL_REPORT 93 echo "</pre>" 94 exit 1 95 fi 96 97 # debug="0" #desactivation debug si =0 98 [ -e /root/debug ] && debug="1" 99 100 TEST_LOCK() 101 # principe bien rempompe sur un script de stephane ;) 102 { 103 # Chemin des fichiers de lock: 104 chemin_lock="/var/lock" 105 # Nom du fichier de lock: 106 fich_lock="$chemin_lock/$SE3MODULE}.lck" 107 if [ -e $fich_lock ]; then 108 t1=$(cat $fich_lock) 109 t_expiration=$(($t1+1200)) 110 t2=$(date +%s) 111 difference=$(($t2-$t1)) 112 if [ $t2 -gt $t_expiration ]; then 113 echo "Tache d'installation de $SE3MODULE initiee en $t1 et il est $t2" | tee -a $REPORT_FILE 114 echo "La tache a depasse le delai imparti." | tee -a $REPORT_FILE 115 echo "Le fichier va etre reinitialise..." | tee -a $REPORT_FILE 116 else 117 echo "Une installation semble deja en cours, veuillez patienter qu'elle se termine, celle-ci dispose de 20mn pour le faire" | tee -a $REPORT_FILE 118 echo "</pre>" 119 exit 1 120 fi 121 122 else 123 date +%s > $fich_lock 124 fi 125 } 126 127 LINE_TEST() 128 { 129 if ( ! wget -q --output-document=/dev/null 'http://wawadeb.crdp.ac-caen.fr/index.html') ; then 130 echo "Votre connexion internet ne semble pas fonctionnelle !!" | tee -a $REPORT_FILE 131 MAIL_REPORT 132 echo "</pre>" 133 exit 1 134 else 135 echo "Connexion internet Ok" 136 fi 137 } 138 139 verif_install() 140 { 141 mod_install=$(apt-cache policy $1 | grep "Install" | cut -d" " -f4) 142 mod_candidat=$(apt-cache policy $1 | grep "Candidat" | cut -d" " -f4) 143 144 if [ -z "$mod_candidat" ]; then 145 echo "Installation de $1 impossible, module non disponible sur le depot !!!" tee -a $REPORT_FILE 146 exit 1 147 fi 148 149 150 if [ "$mod_install" == "$mod_candidat" ]; then 151 echo "Installation de $1 $mod_install Ok !" tee -a $REPORT_FILE 152 else 153 echo "Installation de $1 $mod_install KO !!!!\nAbandon !" tee -a $REPORT_FILE 154 exit 1 155 fi 156 } 157 158 install_module() 159 { 160 echo "Installation ou MAJ de $SE3MODULE" | tee -a $REPORT_FILE 161 echo "Mise a jour de la liste des paquets disponibles ....." | tee -a $REPORT_FILE 162 LINE_TEST 163 TEST_LOCK 164 apt-get update -qq && (echo "Liste mise a jour avec succes" | tee -a $REPORT_FILE) 165 echo "" | tee -a $REPORT_FILE 166 167 echo "Installation du paquet $SE3MODULE et de ses dependances" | tee -a $REPORT_FILE 168 LC_ALL=C apt-get install $SE3MODULE -y --force-yes $opt | tee -a $REPORT_FILE 169 170 verif_install $SE3MODULE 171 172 173 if [ ! -z "$M2" ]; then 174 echo "Installation du paquet complementaire $M2" | tee -a $REPORT_FILE 175 LC_ALL=C apt-get install $M2 -y --force-yes $opt | tee -a $REPORT_FILE 176 verif_install $M2 177 fi 178 179 if [ ! -z "$M3" ]; then 180 echo "Installation du paquet complementaire $M3" | tee -a $REPORT_FILE 181 LC_ALL=C apt-get install $M3 -y --force-yes $opt | tee -a $REPORT_FILE 182 verif_install $M3 183 fi 184 185 # L'envoi d'un mail est superflu 186 #MAIL_REPORT 187 } 188 189 remove_module() 190 { 191 echo "Supression de $SE3MODULE" | tee -a $REPORT_FILE 192 apt-get remove $SE3MODULE -y | tee -a $REPORT_FILE 193 } 194 195 196 ## on installe quoi comme module ? 197 case "$1" in 198 se3) 199 install_module 200 #echo "<br/>" 201 #se3domain_ok=$(dpkg -s se3-domain | grep "Status: install ok") 202 #if [ -z "$se3domain_ok" ]; then 203 # echo "" 204 echo "Maj si besoin se3-domain" | tee -a $REPORT_FILE 205 apt-get install se3-domain -y --force-yes $opt | tee -a $REPORT_FILE 206 207 #fi 208 209 # UPDATE PARTIE MODULES 210 ( 211 dpkg -l|grep se3-|cut -d ' ' -f3|while read package 212 do 213 LC_ALL=C apt-get -s install $package|grep newest >/dev/null|| echo $package 214 done 215 )>/root/se3_update_list 216 217 list_module=$(cat /root/se3_update_list) 218 if [ -n "$list_module" ]; then 219 echo "" 220 echo "Mise a jour des modules" | tee -a $REPORT_FILE 221 apt-get install $list_module -y --force-yes $opt 2>&1 | tee -a $REPORT_FILE 222 ## 223 ##apt-get install $(cat /tmp/se3_update_list) --allow-unauthenticated -y -o Dpkg::Options::=--force-confold 2>&1 | tee -a $REPORT_FILE 224 # rm -f /root/se3_update_list 225 226 fi 227 228 MAIL_REPORT 229 ;; 230 231 se3-dhcp) 232 ## test de l'existence d'un dhcp qui fonctionne et actif au boot et svg des fichiers si existants 233 # DHCP_ACTIVE=$(ps aux | grep dhcpd | grep -v grep) 234 # DHCP_ON_BOOT=$(ls /etc/rc2.d/ | grep dhcp) 235 # if [ -e /etc/dhcp3/dhcpd.conf ]; then 236 # cp -a /etc/dhcp3/dhcpd.conf /root/ 237 # else 238 # [ -e /etc/dhcpd.conf ] && cp -a /etc/dhcpd.conf /root/ 239 # fi 240 241 ## descente de se3-dhcp 242 install_module 243 # Activation dans l'interfesse 244 mysql -h $dbhost -u $dbuser -p$dbpass -D $dbname -e "UPDATE params SET value='1' WHERE name='dhcp';" 245 246 # restauration de l'etat precedent du dhcp si necessaire 247 # [ -e /root/dhcpd.conf ] && mv /root/dhcpd.conf /etc/dhcp3/dhcpd.conf 248 # [ ! -z $DHCP_ON_BOOT ] && /usr/sbin/update-rc.d dhcp3-server default 249 250 251 ;; 252 253 se3-clonage) 254 LINE_TEST 255 # if [ ! -e /usr/sbin/atftpd ]; then 256 257 [ -e /etc/inetd.conf ] && cp -a /etc/inetd.conf /etc/inetd.conf.$SE3MODULE}_$LADATE 258 # echo "Installation de atftpd" | tee -a $REPORT_FILE 259 # apt-get install $option atftpd | tee -a $REPORT_FILE 260 # echo "" | tee -a $REPORT_FILE 261 262 263 # fi 264 265 if [ -d /tftpboot ]; then 266 if [ -z "$(dpkg -s se3-dhcp | grep "Status: install ok")" ]; then 267 echo -e "Presence de /tftpboot detectee, se3-clonage a renomme le repertoire en /tftpboot_$SE3MODULE}.sav" | tee -a $REPORT_FILE 268 mv /tftpboot /tftpboot_$SE3MODULE}.sav 269 fi 270 271 fi 272 install_module 273 [ -e /etc/inetd.conf.$SE3MODULE}_$LADATE ] && cp -a /etc/inetd.conf.$SE3MODULE}_$LADATE /etc/inetd.conf 274 ## Activation du tftp 275 /usr/share/se3/scripts/se3_tftp_boot_pxe.sh start 276 277 # Activation dans l'interfesse 278 mysql -h $dbhost -u $dbuser -p$dbpass -D $dbname -e "UPDATE params SET value='1' WHERE name='clonage';" 279 ;; 280 281 se3-clamav) 282 install_module 283 284 echo "Recuperation du paquet se3-clamav si necessaire (activation possible via l'interface)" 285 mv /etc/clamav/freshclam.conf /etc/clamav/freshclam.conf_se3sauv_$LADATE 286 echo "DatabaseOwner clamav 287 UpdateLogFile /var/log/clamav/freshclam.log 288 LogFileMaxSize 0 289 MaxAttempts 5 290 DatabaseMirror db.fr.clamav.net 291 DatabaseMirror db.local.clamav.net 292 DatabaseMirror database.clamav.net 293 DatabaseDirectory /var/lib/clamav/ 294 DNSDatabaseInfo current.cvd.clamav.net" > /etc/clamav/freshclam.conf 295 chown clamav:adm /etc/clamav/freshclam.conf 296 297 ## desactivation dans l'interface et scan fixés à aucun 298 mysql mysql -h $dbhost -u $dbuser -p$dbpass -D $dbname -e "UPDATE params SET value='1' WHERE name='antivirus';" 299 300 301 302 # Activation dans l'interface 303 # mysql -h $dbhost -u $dbuser -p$dbpass -D $dbname -e "UPDATE params SET value='1' WHERE name='clamav';" 304 ;; 305 306 se3-ocs) 307 cp /root/.my.cnf /var/remote_adm/ 308 chown www-se3 /var/remote_adm/.my.cnf 309 chmod 400 /var/remote_adm/.my.cnf 310 install_module 311 rm -f /var/remote_adm/.my.cnf 312 ;; 313 314 se3-wpkg) 315 install_module 316 ;; 317 318 se3-unattended) 319 install_module 320 ;; 321 322 se3-domain) 323 install_module 324 ;; 325 326 se3-logonpy) 327 install_module 328 ;; 329 330 se3-internet) 331 install_module 332 ;; 333 334 se3-backup) 335 install_module 336 ;; 337 338 se3-synchro) 339 340 if [ "$install" == "1" ]; then 341 install_module 342 fi 343 344 if [ "$remove" == "1" ]; then 345 remove_module 346 fi 347 348 ;; 349 # 350 # se3-seven) inutile sous squeeze ! 351 # echo "Installation ou MAJ du support seven (samba backport)" | tee -a $REPORT_FILE 352 # LINE_TEST 353 # TEST_LOCK 354 # echo "deb http://backports.debian.org/debian-backports lenny-backports main" > /etc/apt/sources.list.d/smb_backport.list 355 # echo "Mise a jour de la liste des paquets disponibles ....." | tee -a $REPORT_FILE 356 # apt-get update -qq && (echo "Liste mise a jour avec succes" | tee -a $REPORT_FILE) 357 # echo "" | tee -a $REPORT_FILE 358 # 359 # echo "Installation du paquet Samba et de ses dependances" | tee -a $REPORT_FILE 360 # echo "Dpkg::Options {\"--force-confnew\";}" > /etc/apt/apt.conf 361 # apt-get -t lenny-backports install samba -y --force-yes $opt 2>&1 | tee -a $REPORT_FILE 362 # apt-get -t lenny-backports install samba-common-bin -y --force-yes $opt 2>&1 | tee -a $REPORT_FILE 363 # rm -f /etc/apt/apt.conf 364 # MAIL_REPORT 365 # ;; 366 367 se3-fondecran) 368 SE3MODULE="gsfonts" 369 M2="imagemagick" 370 371 # Parametres: 372 chemin_param_fond="/etc/se3/fonds_ecran" 373 374 # Creation du dossier de parametres: 375 mkdir -p $chemin_param_fond 376 chown www-se3:root $chemin_param_fond 377 378 # Dossier de log en cas de mode debug active: 379 dossier_log="/var/log/se3/fonds_ecran" 380 mkdir -p "$dossier_log" 381 382 #installation paquets si besoin 383 install_module && touch $chemin_param_fond/imagemagick_present.txt && touch $chemin_param_fond/gsfonts_present.txt 384 if [ -e $chemin_param_fond/gsfonts_present.txt ]; then 385 #paramétrage 386 echo "Installation ok !, parametrage...." 387 echo "3" > $chemin_param_fond/version_samba.txt 388 touch $chemin_param_fond/actif.txt 389 chown www-se3 $chemin_param_fond/actif.txt 390 touch $chemin_param_fond/parametres_generation_fonds.sh 391 chown www-se3 $chemin_param_fond/parametres_generation_fonds.sh 392 chmod 750 $chemin_param_fond/parametres_generation_fonds.sh 393 touch $chemin_param_fond/install_ok.txt 394 fi 395 396 # creation du droit ldap fond_can_change 397 echo "dn: cn=fond_can_change,$rightsRdn},$ldap_base_dn} 398 objectClass: groupOfNames 399 cn: fond_can_change 400 member: uid=admin,$peopleRdn},$ldap_base_dn} 401 " | ldapadd -x -D $adminRdn},$ldap_base_dn} -w $adminPw} 402 403 mkdir -p /var/www/se3/Admin/fonds_ecran/courant 404 chown www-se3 /var/www/se3/Admin/fonds_ecran/courant 405 406 mkdir -p /var/lib/se3/fonds_ecran 407 chown www-se3 /var/lib/se3/fonds_ecran 408 409 410 ;; 411 412 413 # Installation du paquet se3-clients-linux 414 se3-clients-linux) 415 # On verifie que le serveur NTP fourni dans la configuration du Se3 416 # est bien valide. 417 fichier="/etc/se3/config_c.cache.sh" 418 SERVEUR_NTP=$(grep -E '^ntpserv=' "$fichier" | cut -d'=' -f'2-' | tr -d '"') 419 if [ -z "$SERVEUR_NTP" ]; then 420 echo "Desole, le nom du serveur NTP recupere dans le fichier \"$fichier\" est vide." 421 exit 1 422 else 423 if ! ntpdate "$SERVEUR_NTP" > /dev/null 2>&1; then 424 echo "Desole, mais le serveur NTP dont le nom a ete recupere" \ 425 "dans le fichier \"$fichier\" ne semble pas fonctionner." 426 exit 1 427 fi 428 fi 429 install_module 430 ;; 431 432 433 434 435 *) 436 echo "Le module $SE3MODULE n'existe pas ou n'est pas pris en charge par se3 pour le moment" | tee -a $REPORT_FILE 437 MAIL_REPORT 438 439 ;; 440 esac 441 echo "</pre>" 442 echo "Installation terminee, suppression du fichier verrou" | tee -a $REPORT_FILE 443 rm -f $fich_lock 444 /usr/share/se3/scripts/refresh_cache_params.sh 445 exit 0 446
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 |