diff options
author | ramon <ramongomez@us.es> | 2014-06-18 10:42:24 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2014-06-18 10:42:24 +0000 |
commit | 1602040392ece97f3876f6b756158141a41cac3a (patch) | |
tree | dd933aa35b10a8dcb8bfc98c21f51de309f56cad /repoman | |
parent | 51c2318a7174de452b9ebd41dde9335a97b94e3f (diff) |
Versión 1.0.5, #616: Integrar código de la versión 1.0.5 en rama principal.
git-svn-id: https://opengnsys.es/svn/trunk@4309 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'repoman')
-rw-r--r-- | repoman/README.es.txt | 1 | ||||
-rwxr-xr-x | repoman/bin/deleteimage | 78 | ||||
-rwxr-xr-x | repoman/bin/deletepreimage | 62 | ||||
-rwxr-xr-x | repoman/bin/opengnsys.cron | 31 | ||||
-rwxr-xr-x | repoman/bin/sendFileMcast | 2 | ||||
-rwxr-xr-x | repoman/bin/torrent-creator | 6 | ||||
-rw-r--r-- | repoman/etc/rsyncd.conf.tmpl | 14 | ||||
-rw-r--r-- | repoman/etc/rsyncd.secrets.tmpl | 1 |
8 files changed, 168 insertions, 27 deletions
diff --git a/repoman/README.es.txt b/repoman/README.es.txt index cfcf31b4..c71a23d2 100644 --- a/repoman/README.es.txt +++ b/repoman/README.es.txt @@ -5,5 +5,6 @@ OpenGnSys Repository Manager RREADME Este directorio contiene la estructura de datos del repositorio de datos de OpenGnSys. - bin binarios y scripts de gestión del repositorio. +- etc ficheros o plantillas de configuración del repositorio. diff --git a/repoman/bin/deleteimage b/repoman/bin/deleteimage index c65277a8..3807b841 100755 --- a/repoman/bin/deleteimage +++ b/repoman/bin/deleteimage @@ -1,13 +1,17 @@ #!/bin/bash -# deleteimage [ -d | -r ] str_image +# deleteimage [ -b | -r | -i ] str_image #@file deleteimage #@brief Borra del repositorio los ficheros de una imagen. -#@param -d Elimina también la copia de seguridad de la imagen (opcional). +#@param -b Elimina también la copia de seguridad de la imagen (opcional). #@param -r Recupera la copia de seguridad de la imagen (opcional). +#@param -i Elimina imagen Incremental o Basica #@param str_image Nombre canónico de la imagen, sin extensión. -#@version 1.0.5 -#@date 2013-03-06 -#@author Ramón Gómez, ETSII Universidad de Sevilla +#@version 1.0 - Versión inicial. +#@date 2012-10-14 +#@author Ramón Gómez, ETSII Univ. Sevilla +#@version 1.2 - Eliminar imagen incremental. +#@date 2013-07-17 +#@author Alberto García, Univ. Málaga PROG=$(basename $0) @@ -15,39 +19,40 @@ OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} OGIMG=$OPENGNSYS/images IMGEXT="img" BAKEXT="ant" - +DIFFEXT="diff" + # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then cat << EOT $PROG: Borra los ficheros de una imagen del repositorio. -Formato: $PROG [ -d | -r ] str_image - -d Elimina también la copia de seguridad de la imagen. +Formato: $PROG [ -b | -r | -i | -d ] str_image + -b Elimina también la copia de seguridad de la imagen. -r Recupera la copia de seguridad de la imagen. + -i Elimina imagen Incremental o Basica + -d Elimina Directorios Ejemplo: $PROG imagen1 EOT exit 0 fi + # Procesar parámetros -while getopts dr OPTION; do +while getopts brid OPTION; do case $OPTION in - d) DELETEBACKUP=1 ;; + b) DELETEBACKUP=1 ;; r) RECOVERBACKUP=1 ;; + i) DELETEINCREMEN=1 ;; + d) DELETEDIRECTORIO=1 ;; *) ERR=1 ;; esac shift $((OPTIND-1)) done -[ -n "$DELETEBACKUP" ] && [ -n "$RECOVERBACKUP" ] && ERR=1 + +[ -n "$DELETEBACKUP" ] && [ -n "$RECOVERBACKUP" ] && [ -n "$DELETEINCREMEN" ] && [ -n "$DELETEDIRECTORIO" ] && ERR=1 if [ $# != 1 -o -n "$ERR" ]; then - echo "$PROG Error: Formato: $PROG [ -b | -r ] str_image" + echo "$PROG Error: Formato: $PROG [ -b | -r | -i | -d ] str_image" exit 1 fi -# Fichero principal de la imagen. -IMGFILE="$OGIMG/$1.$IMGEXT" - -# Eliminar ficheros de la imagen. -rm -f $IMGFILE && rm -f $IMGFILE.{sum,torrent} - # Recuperar copia de seguridad de la imagen. if [ -n "$RECOVERBACKUP" ]; then mv -f $IMGFILE.$BAKEXT $IMGFILE && \ @@ -60,3 +65,40 @@ if [ -n "$DELETEBACKUP" ]; then rm -f $IMGFILE.$BAKEXT && rm -f $IMGFILE.{sum,torrent}.$BAKEXT fi +# Borrar directorio de imagen +IMGFILECA="$OGIMG/$1" +if [ -n "$DELETEINCREMEN" ];then +rm -R $IMGFILECA && exit +fi + +# Si el Nombre canonico es un directorio eliminamos +# o si la opcion es i tambien eliminamos +IMGFILECA="$OGIMG/$1" +if [ -n "$DELETEDIRECTORIO" ]; then +rm -R $IMGFILECA && exit + +# Si el Nomobre canonico NO es un directorio +else + # Comprobamos si es un archivo backup .ant + NOMBREANT=$(echo $1 | awk -F. '{print $1}') + if [ $1 == "$NOMBREANT.$BAKEXT" ]; then + IMGFILE="$OGIMG/$NOMBREANT.$IMGEXT.$BAKEXT" + # Eliminar fichero de seguridad .img.ant + rm -f $IMGFILE + else + # Comprobamos si es un archivo diferencial .diff + NOMBREDIF="$OGIMG/$1.$IMGEXT.$DIFFEXT" + if [ -f $NOMBREDIF ]; then + IMGFILE="$OGIMG/$1.$IMGEXT.$DIFFEXT" + # Eliminar fichero diferencial .diff .torrent .sum + rm -f $IMGFILE && rm -f $IMGFILE.{sum,torrent} + + else + # Fichero principal de la imagen. + IMGFILE="$OGIMG/$1.$IMGEXT" + # Eliminar ficheros de la imagen. + rm -f $IMGFILE && rm -f $IMGFILE.{sum,torrent} + fi + fi + +fi
\ No newline at end of file diff --git a/repoman/bin/deletepreimage b/repoman/bin/deletepreimage new file mode 100755 index 00000000..85883aea --- /dev/null +++ b/repoman/bin/deletepreimage @@ -0,0 +1,62 @@ +#!/bin/bash +# Eliminar las imagenees del repositiro seg�raca de la consola web .img +#Version 0.3 Ejecuci�n desde cron cada minuto. +#echo "* * * * * root /opt/opengnsys/bin/image-delete" > /etc/cron.d/imagedelete + +# Comprobar si el proceso ya est� en ejecuci�n.on. +PROG=$(basename $0) +[ "$(pgrep "$PROG")" != "$$" ] && exit + +# Variables. +OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} +PATH=$PATH:$OPENGNSYS/bin +OGIMG="$OPENGNSYS/images" +REPOCFG="$OPENGNSYS/etc/ogAdmRepo.cfg" +LOGFILE="$OPENGNSYS/log/$PROG.log" + +# Error si no est� bien configurado el repositorio de im�genes.nes. +[ -d $OGIMG -a -f $REPOCFG ] || exit 1 + +# Procesar ficheros de im�genes.s. +trap 'echo "`date` : Proceso interrumpido" >> $LOGFILE; exit ' 1 2 3 6 9 15 + +#TODO en LOCAL: si existe algun fichero *.delete lo movemos al repositorio +ls /opt/opengnsys/www/tmp/*.delete &>/dev/null || exit +#[ -f /opt/opengnsys/www/tmp/*.delete ] && +mv /opt/opengnsys/www/tmp/*.* /opt/opengnsys/images/ + +#TODO: iniciar blucle siempre y cuando haya algun delete +ls /opt/opengnsys/images/*.delete &>/dev/null || exit + +for IMG in `ls /opt/opengnsys/images/*.delete`; do + ## Obtenemos el nombre de la imagen + DELETEIMAGE=$(echo $IMG | awk -F"." '{print $1}' | awk -F"/opt/opengnsys/images/" '{print $2}') + + # Borramos marca .delete para que el proximo cron no trabaje sobre este conjunto. + [ -f $IMG ] && rm $IMG + + ## Comprobamos si es un Directorio .delete + DELETEdir=$(echo $IMG | awk -F"." '{print $2}') ## .delete + DELETEant=$(echo $IMG | awk -F"." '{print $3}') ## .ant + DELETEdiff=$(echo $IMG | awk -F"." '{print $3}') ## .diff + ## Si NO es ninguno es un img + + ## se llama al escript de borrado de imagen. + ## Si es un Directorio Borramos + if [[ $DELETEdir == "delete" ]]; then + /opt/opengnsys/bin/deleteimage -d $DELETEIMAGE + + # Si es un Imagen Backup Borramos + elif [[ $DELETEant == "ant" ]]; then + DELETEIMAGE=$DELETEIMAGE".ant" + /opt/opengnsys/bin/deleteimage $DELETEIMAGE + + # Si es un Imagen diff Borramos + elif [[ $DELETEdiff == "diff" ]]; then + /opt/opengnsys/bin/deleteimage $DELETEIMAGE + + # Si no es una de las anteriores lo que queda es img + else + /opt/opengnsys/bin/deleteimage $DELETEIMAGE + fi +done
\ No newline at end of file diff --git a/repoman/bin/opengnsys.cron b/repoman/bin/opengnsys.cron index 76236f73..be5a0508 100755 --- a/repoman/bin/opengnsys.cron +++ b/repoman/bin/opengnsys.cron @@ -1,20 +1,39 @@ #!/bin/bash -# Comprobamos si los servicios de opengnsys están levantado y si no es así los iniciamos. +# opengnsys.cron - Script para comprobar si los servicios de OpenGnSys están levantados +# e iniciarlos automáticamente. +# Nota: este script debe ser lanzado por Cron cada minuto. + + # Variables. OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} LOGDIR="$OPENGNSYS/log" DEFAULTFILE=/etc/default/opengnsys +typeset -i OGCPU # % uso CPU # Comprobar servicios que deben estar activos. [ -f $DEFAULTFILE ] && source $DEFAULTFILE -# Si un servicio debe estar activo y no se está ejecutando, reiniciar OpenGnSys. -if [ "$RUN_OGADMSERVER" == "yes" -a $(pgrep ogAdmServer | wc -w) == 0 ]; then - date +"%d/%m/%Y %T ERROR: El servicio ogAdmServer estaba caido, se reinicia" >> $LOGDIR/ogAdmServer.log - /etc/init.d/opengnsys restart +# Salir si no se debe ejecutar la revisión en el cron. +[ "$RUN_CRONJOB" == "no" ] && exit + +# Comprobar si está activo el servidor OpenGnSys. +if [ "$RUN_OGADMSERVER" == "yes" ]; then + # Parar procesos ogAdmServer si consume más de 90% de CPU. + OGPID=$(pgrep ogAdmServer) + OGCPU=$(top -b -n 1 -p $OGPID 2>/dev/null | awk -v p=$OGPID '$1~p {printf "%d",$9}') + if [ $OGCPU -gt 90 ]; then + date +"%d/%m/%Y %H:%M AVISO: ogAdmServer (PID=$OGPID) parado, consumiendo $OGCPU % de CPU" >> $LOGDIR/ogAdmServer.log + kill -9 $OGPID + fi + # Reiniciar servicios si proceso ogAdmServer está caído. + if ! pgrep ogAdmServer >/dev/null; then + date +"%d/%m/%Y %H:%M ERROR: El servicio ogAdmServer estaba caido, se reinicia" >> $LOGDIR/ogAdmServer.log + /etc/init.d/opengnsys restart + fi fi +# Reiniciar servicios si es repositorio y proceso ogAdmRepo está caído. if [ "$RUN_OGADMREPO" == "yes" -a $(pgrep ogAdmRepo | wc -w) == 0 ]; then - date +"%d/%m/%Y %T ERROR: El servicio ogAdmRepo estaba caido, se reinicia" >> $LOGDIR/ogAdmRepo.log + date +"%d/%m/%Y %H:%M ERROR: El servicio ogAdmRepo estaba caido, se reinicia" >> $LOGDIR/ogAdmRepo.log /etc/init.d/opengnsys restart fi diff --git a/repoman/bin/sendFileMcast b/repoman/bin/sendFileMcast index ec4d7aa6..ac6446d8 100755 --- a/repoman/bin/sendFileMcast +++ b/repoman/bin/sendFileMcast @@ -57,5 +57,5 @@ CERROR="8x8/128" # Envío de fichero por Multicast. # Se desabilita el uso de mbuffer: eesta versión del upd-sender no la admite. #which mbuffer &> /dev/null && MBUFFER="--pipe 'mbuffer -m 20M'" -$OGBIN/udp-sender $MBUFFER --nokbd --retries-until-drop 65 --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 1 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG" +$OGBIN/udp-sender $MBUFFER --nokbd --retries-until-drop 65 --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG" diff --git a/repoman/bin/torrent-creator b/repoman/bin/torrent-creator index 61765ed5..e890a958 100755 --- a/repoman/bin/torrent-creator +++ b/repoman/bin/torrent-creator @@ -25,7 +25,7 @@ pushd $OGIMG >/dev/null # Procesar ficheros de imágenes. trap 'echo "`date` : Proceso interrumpido" >> $LOGFILE; exit ' 1 2 3 6 9 15 -for IMG in *.{img,pgz}; do +for IMG in *.{img,pgz,diff}; do # Saltar al siguiente si la imagen está bloqueada o si no existe el fichero. LOCKFILE="$IMG.lock" if [ -f "$LOCKFILE" -o ! -f "$IMG" ]; then @@ -46,13 +46,15 @@ for IMG in *.{img,pgz}; do rm -f "$TORRENT" "$SUMFILE" DATASUM=$(tail -c1M "$IMG" | md5sum -b | cut -f1 -d" ") echo $DATASUM > "$SUMFILE" - nice -8 ctorrent -t "$IMG" -u $TRACKERURL -s "$TORRENT" -c $DATASUM 2>/dev/null + nice -8 ctorrent -t "$IMG" -u $TRACKERURL -s "$TORRENT" -c $DATASUM -l 4194304 2>/dev/null rm -f "$LOCKFILE" if [ -f "$TORRENT" ]; then echo "`date` : Fin creación de fichero $TORRENT" >> $LOGFILE else echo "`date` : ERROR en creación de fichero $TORRENT" >> $LOGFILE fi + # Modificación realizada en la corrección temporal de la incidencia #535 + break done popd >/dev/null diff --git a/repoman/etc/rsyncd.conf.tmpl b/repoman/etc/rsyncd.conf.tmpl new file mode 100644 index 00000000..303893a1 --- /dev/null +++ b/repoman/etc/rsyncd.conf.tmpl @@ -0,0 +1,14 @@ +max connections = 0 +log file = /var/log/rsync.log +timeout = 300 + + [ogimages] + comment = Carpeta de imagenes + path = /opt/opengnsys/images + read only = no + list = yes + uid = root + gid = root + auth users = CLIENTUSER + secrets file = /etc/rsyncd.secrets + diff --git a/repoman/etc/rsyncd.secrets.tmpl b/repoman/etc/rsyncd.secrets.tmpl new file mode 100644 index 00000000..92a79be6 --- /dev/null +++ b/repoman/etc/rsyncd.secrets.tmpl @@ -0,0 +1 @@ +CLIENTUSER:CLIENTPASSWORD |