summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2012-06-18 10:12:03 +0000
committerramon <ramongomez@us.es>2012-06-18 10:12:03 +0000
commit7b9dedd5aa2af26ede958f8877db6982cc184634 (patch)
treef11f757c7e6e49aecdef115ff8a45572542e1605
parent5792125769e55caa24cb660c9d3ac7843bc8110f (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-xclient/engine/FileSystem.lib103
-rwxr-xr-xclient/engine/PostConf.lib2
-rwxr-xr-xclient/shared/scripts/configureOs2
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."