diff options
author | ramon <ramongomez@us.es> | 2012-06-18 10:12:03 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2012-06-18 10:12:03 +0000 |
commit | 7b9dedd5aa2af26ede958f8877db6982cc184634 (patch) | |
tree | f11f757c7e6e49aecdef115ff8a45572542e1605 | |
parent | 5792125769e55caa24cb660c9d3ac7843bc8110f (diff) |
Versión 1.0.4, #543: Evitar bloqueos indefinidos en varias funciones; nuevo formato de salida de función {{{ogGetFsSize}}}; evitar múltimples mensajes de error en script {{{configureOs}}}.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3218 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-x | client/engine/FileSystem.lib | 103 | ||||
-rwxr-xr-x | client/engine/PostConf.lib | 2 | ||||
-rwxr-xr-x | client/shared/scripts/configureOs | 2 |
3 files changed, 55 insertions, 52 deletions
diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib index 218193f2..5d8bb9fc 100755 --- a/client/engine/FileSystem.lib +++ b/client/engine/FileSystem.lib @@ -74,6 +74,7 @@ if ogIsLocked $1 $2; then fi # Comprobar en modo uso exclusivo. ogLock $1 $2 +trap "ogUnlock $1 $2" 1 2 3 6 9 eval $PROG $PARAMS $PART ERRCODE=$? case $ERRCODE in @@ -129,6 +130,7 @@ TYPE=$(ogGetFsType $1 $2) case "$TYPE" in EXT[234]) PROG="resize2fs"; PARAMS="-f" ;; REISERFS) PROG="resize_reiserfs"; PARAMS="-f" ;; +# BTRFS) PROG="btrfs"; PARAMS="filesystem resize max" ;; NTFS) PROG="ntfsresize"; PARAMS="<<<\"y\" -f" ;; *) ogRaiseError $OG_ERR_PARTITION "$1 $2 $TYPE" return $? ;; @@ -144,6 +146,7 @@ if ogIsLocked $1 $2; then fi # Redimensionar en modo uso exclusivo. ogLock $1 $2 +trap "ogUnlock $1 $2" 1 2 3 6 9 eval $PROG $PARAMS $PART &>/dev/null ERRCODE=$? case $ERRCODE in @@ -288,6 +291,7 @@ if ogIsLocked $1 $2; then fi # Formatear en modo uso exclusivo. ogLock $1 $2 +trap "ogUnlock $1 $2" 1 2 3 6 9 eval $PROG $PARAMS $PART 2>/dev/null ERRCODE=$? case $ERRCODE in @@ -301,6 +305,54 @@ return $ERRCODE #/** +# ogGetFsSize int_ndisk int_npartition [str_unit] +#@brief Muestra el tamanio del sistema de archivos indicado, permite definir la unidad de medida, por defecto GB +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param str_unit unidad (opcional, por defecto: KB) +#@return float_size - Tamaño del sistema de archivos +#@note str_unit = { KB, MB, GB, TB } +#@exception OG_ERR_FORMAT Formato incorrecto. +#@exception OG_ERR_NOTFOUND Disco o partición no corresponden con un dispositivo. +#@version 0.1 - Integracion para Opengnsys - EAC: SizeFileSystem() en FileSystem.lib +#@author Antonio J. Doblas Viso. Universidad de Malaga +#@date 2008-10-27 +#@version 1.0.4 - Adaptación de las salidas. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2012-06-18 +#*/ ## +function ogGetFsSize () +{ +# Variables locales. +local MNTDIR VALUE FACTOR +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition [str_unit]" \ + "$FUNCNAME 1 1 => 15624188" \ + "$FUNCNAME 1 1 KB => 15624188" + return +fi +# Error si no se reciben 2 o 3 parámetros. +[ $# == 2 ] || [ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? + +MNTDIR="$(ogMount$1 $2)" || return $? +VALUE= +UNIT="$3" +UNIT=${UNIT:-"KB"} +case "$UNIT" in + [kK]B) + FACTOR=1 ;; + MB) FACTOR=1024 ;; + GB) FACTOR=$[1024*1024] ;; + TB) FACTOR=$[1024*1024*1024] ;; + *) ogRaiseError $OG_ERR_FORMAT "$3 != { KB, MB, GB, TB }" + return $? ;; +esac +echo "$VALUE $FACTOR" | awk '{printf "%f\n", $1/$2}' +} + + +#/** # ogGetFsType int_ndisk int_npartition #@brief Devuelve el mnemonico con el tipo de sistema de archivos. #@param int_ndisk nº de orden del disco @@ -910,57 +962,6 @@ for ((PART=1; PART<=$(ogGetPartitionsNumber $1); PART++)); do done } -#/** @function ogGetFsSize: @brief Muestra el tamanio del sistema de archivos indicado, permite definir la unidad de medida, por defecto GB -#@param $1 int_diskEAC -#@param $2 int_PartitionEAC -#@param $3 str_UnidadMediada parametro opcional, admite [ kB MB GB -default GB] -#@return cadena con int_TotalSize:int_DataSize:int_DataFree -#@warning Salidas de errores no determinada -#@warning -#@attention -#@version 0.1 - Integracion para Opengnsys - EAC: SizeFileSystem() en FileSystem.lib -#@author Antonio J. Doblas Viso. Universidad de Malaga -#@date 2008-10-27 -#*/ -function ogGetFsSize () { -if [ $# = 0 ] -then - echo "sintaxis: ogGetFsSize int_disco int_partition str_SizeOutput [ kB MB GB -default GB]-]" red - echo "devuelve int_size : int_data : int_free" red -return -fi -if [ $# -ge 2 ] -then - particion=`ogMount $1 $2 ` #1>/dev/null 2>&1 - if [ -z $3 ] - then - unit=kB # s B kB MB GB TB % - else - unit=$3 - fi - case $unit in - kB) - factor="1.024"; - # valor=`df | grep $particion | awk -F" " '{size=$2*1.024; used=$3*1.024; free=$4*1.024; printf "%d:%d:%d", size,used,free}'` - valor=`df | grep $particion | awk -F" " '{size=$2*1.024; used=$3*1.024; free=$4*1.024; printf "%d", size}'` - ;; - MB) - factor="1.024/1000"; - valor=`df | grep $particion | awk -F" " '{size=$2*1.024/1000; used=$3*1.024/1000; free=$4*1.024/1000; printf "%d:%d:%d", size,used,free}'` - ;; - GB) - factor="1.024/1000000"; - valor=`df | grep $particion | awk -F" " '{size=$2*1.024/1000000; used=$3*1.024/1000000; free=$4*1.024/1000000; printf "%f:%f:%f", size,used,free}'` - ;; - esac - #echo $valor - #NumberRound $valor - #valor=`NumberRound $valor`; - ogUnmount $1 $2 1>/dev/null 2>&1 - echo $valor - -fi -} function ogGetFreeSize () { if [ $# = 0 ] diff --git a/client/engine/PostConf.lib b/client/engine/PostConf.lib index 62ba5c9b..f7780aba 100755 --- a/client/engine/PostConf.lib +++ b/client/engine/PostConf.lib @@ -172,6 +172,7 @@ done [ -n "$RCLOCAL" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 rc.local" || return $? # Realizar la instalación en modo uso exclusivo. ogLock $1 $2 +trap "ogUnlock $1 $2" 1 2 3 6 9 # Copiar cliente, generar fichero de configuración e incluir en el arranque. cp -a $CLIENTFILE $MNTDIR/$SBINDIR cat > $MNTDIR/$ETCDIR/ogAdmLnxClient.cfg << EOT @@ -371,6 +372,7 @@ done [ -n "$WINDIR " ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 windows" || return $? # Realizar la instalación en modo uso exclusivo. ogLock $1 $2 +trap "ogUnlock $1 $2" 1 2 3 6 9 # Copiar cliente, generar fichero de configuración e incluir en el arranque. cp -a $CLIENTFILE "$WINDIR" ogInstallMiniSetup $1 $2 ogclient.cmd diff --git a/client/shared/scripts/configureOs b/client/shared/scripts/configureOs index 89bd3797..1833cff5 100755 --- a/client/shared/scripts/configureOs +++ b/client/shared/scripts/configureOs @@ -29,7 +29,7 @@ [ -f $DEVICECFG ] && source $DEVICECFG # Si el sistema de archivos no esta extendido, ampliarlo al tamaño de su partición. -PARTSIZE=$(ogGetPartitionSize $1 $2) +PARTSIZE=$(ogGetPartitionSize $1 $2) || exit $? FSSIZE=$(ogGetFsSize $1 $2) if [ $FSSIZE -lt $PARTSIZE ]; then echo "Extender sistema de archivos." |