diff options
author | ramon <ramongomez@us.es> | 2009-10-20 12:45:37 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2009-10-20 12:45:37 +0000 |
commit | 1c04494225fab6abe8897ed306176c4be95ef3e3 (patch) | |
tree | 41c219bb38bee2ed89b33c6eb6b43e1aca6db597 | |
parent | c2b03eb3c234218d8984300dc452f08c06275f12 (diff) |
Correcciones en scripts; metafunción ogGetOsType.
git-svn-id: https://opengnsys.es/svn/trunk@394 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-x | client/engine/Disk.lib | 2 | ||||
-rwxr-xr-x | client/engine/FileSystem.lib | 46 | ||||
-rwxr-xr-x | client/engine/Inventory.lib | 58 | ||||
-rwxr-xr-x | client/nfsexport/scripts/create-image.sh | 5 | ||||
-rwxr-xr-x | client/nfsexport/scripts/restore-image.sh | 11 |
5 files changed, 73 insertions, 49 deletions
diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib index b2dff7cc..91ca9caa 100755 --- a/client/engine/Disk.lib +++ b/client/engine/Disk.lib @@ -436,7 +436,7 @@ PART="$(ogDiskToDev $1 $2)" || return $? # Convertir tamaño en KB a sectores de 512 B. SIZE=$[$3*2] || ogRaiseError $OG_ERR_FORMAT || return $? #/// Usar \c sfdisk para redefinir el tamaño. -sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? +sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" &>/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? } diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib index 896f2006..69cd496a 100755 --- a/client/engine/FileSystem.lib +++ b/client/engine/FileSystem.lib @@ -101,7 +101,7 @@ fi #/// Obtener partición. PART="$(ogDiskToDev $1 $2)" || return $? -ogUnmount $1 $2 >/dev/null +ogUnmount $1 $2 2>/dev/null #/// Redimensionar al tamano máximo según el tipo de partición. TYPE=$(ogGetFsType $1 $2) case "$TYPE" in @@ -122,7 +122,7 @@ if ogIsLocked $1 $2; then fi #/// Redimensionar en modo uso exclusivo. ogLock $1 $2 -eval $PROG $PARAMS $PART +eval $PROG $PARAMS $PART &>/dev/null ERRCODE=$? case $ERRCODE in 0) ;; @@ -577,27 +577,27 @@ PART="$(ogDiskToDev $1 $2)" || return $? #/// Redimensionar según el tipo de particion. case "$(ogGetFsType $1 $2)" in - EXT[234]) - ogUnmount $1 $2 >/dev/null - # Ext2/3/4: Tamaño de los bloques del sistema de archivos - BLKS=$(tune2fs -l $PART | awk '/Block size/ {print int($3/512)}') - # Traduce el num. en sectores de 512B a tamano en MB. - SIZE=$(resize2fs -P $PART 2>/dev/null | \ - awk -v B=$BLKS '/minimum size/ {print int($7*B/2048+1000)}') - resize2fs -fp $PART "${SIZE}M" &>/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? - ;; - REISERFS) # Usar "resize_reiserfs" - ;; - NTFS|HNTFS) - rm -f $(ogGetPath $1 $2 pagefile.sys) - ogUnmount $1 $2 >/dev/null - #NTFS: Obtiene tamano minimo en MB. - SIZE=$(ntfsresize -fi $PART | awk '/resize at/ {print $8+1000}') - ntfsresize -fns "${SIZE}M" $PART >/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? - ntfsresize -fs "${SIZE}M" $PART <<<"y" >/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? - ;; - *) ogRaiseError $OG_ERR_PARTITION "$1,$2" - return $? ;; + EXT[234]) + ogUnmount $1 $2 >/dev/null + # Ext2/3/4: Tamaño de los bloques del sistema de archivos + BLKS=$(tune2fs -l $PART | awk '/Block size/ {print int($3/512)}') + # Traduce el num. en sectores de 512B a tamano en MB. + SIZE=$(resize2fs -P $PART 2>/dev/null | \ + awk -v B=$BLKS '/minimum size/ {print int($7*B/2048+1000)}') + resize2fs -fp $PART "${SIZE}M" &>/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? + ;; + REISERFS) # Usar "resize_reiserfs" + ;; + NTFS|HNTFS) + rm -f $(ogGetPath $1 $2 pagefile.sys) + ogUnmount $1 $2 >/dev/null + # NTFS: Obtiene tamaño mínimo en MB. + SIZE=$(ntfsresize -fi $PART | awk '/resize at/ {print $8+1000}') + ntfsresize -fns "${SIZE}M" $PART >/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? + ntfsresize -fs "${SIZE}M" $PART <<<"y" >/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? + ;; + *) ogRaiseError $OG_ERR_PARTITION "$1,$2" + return $? ;; esac #/// Mostrar nuevo tamaño en KB. echo $[SIZE*1024] diff --git a/client/engine/Inventory.lib b/client/engine/Inventory.lib index 816adf00..30f91f53 100755 --- a/client/engine/Inventory.lib +++ b/client/engine/Inventory.lib @@ -12,15 +12,15 @@ #/** # ogGetOsVersion int_ndisk int_npartition #@brief Devuelve la versión del sistema operativo instalado en un sistema de archivos. -#@arg \c ndisk nº de orden del disco -#@arg \c npartition nº de orden de la partición -#@return TipoSistema:Versión +#@arg \c int_ndisk nº de orden del disco +#@arg \c int_npartition nº de orden de la partición +#@return OSType:OSVersion #@note TipoSistema = { Linux, Windows } #@note Requisitos: awk, head, chroot #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o partición no corresponden con un dispositiv #@exception OG_ERR_PARTITION Fallo al montar el sistema de archivos. -#@version 0.1 - Primeras pruebas con OpenGNSys +#@version 0.9 - Primera versión para OpenGNSys #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-15 #*/ @@ -43,25 +43,25 @@ MNTDIR=$(ogMount $1 $2) || return $? #/// Elección del tipo de sistema operativo. case "$(ogGetFsType $1 $2)" in EXT[234] | REISERFS | REISER4) - TYPE="Linux" - #/// Para Linux: leer descripción. - VERSION=$(chroot $MNTDIR lsb_release -d 2>/dev/null| awk -F: '{gsub (/\t/,""); print $2}') - #/// Si no se puede obtener, buscar en ficheros del sistema. - if [ -z "$VERSION" ]; then - FILE="$MNTDIR/etc/lsb-release" - [ -r $FILE ] && VERSION="$(awk 'BEGIN {FS="="}; $1~/DESCRIPTION/ {gsub(/\"/,"",$2); print $2}' $FILE)" - FILE="$MNTDIR/etc/redhat-release" - [ -r $FILE ] && VERSION="$(head -1 $FILE)" - FILE="$MNTDIR/etc/SuSE-release" - [ -r $FILE ] && VERSION="$(head -1 $FILE)" - fi - [ -e $MNTDIR/lib64 ] && VERSION="$VERSION 64 bits" - ;; + TYPE="Linux" + #/// Para Linux: leer descripción. + VERSION=$(chroot $MNTDIR lsb_release -d 2>/dev/null| awk -F: '{gsub (/\t/,""); print $2}') + #/// Si no se puede obtener, buscar en ficheros del sistema. + if [ -z "$VERSION" ]; then + FILE="$MNTDIR/etc/lsb-release" + [ -r $FILE ] && VERSION="$(awk 'BEGIN {FS="="}; $1~/DESCRIPTION/ {gsub(/\"/,"",$2); print $2}' $FILE)" + FILE="$MNTDIR/etc/redhat-release" + [ -r $FILE ] && VERSION="$(head -1 $FILE)" + FILE="$MNTDIR/etc/SuSE-release" + [ -r $FILE ] && VERSION="$(head -1 $FILE)" + fi + [ -e $MNTDIR/lib64 ] && VERSION="$VERSION 64 bits" + ;; NTFS | HTNFS | FAT32 | HFAT32) - TYPE="Windows" - #/// Para Windows: leer la version del registro. - VERSION=$(ogGetRegistryValue $MNTDIR software '\Microsoft\Windows NT\CurrentVersion\ProductName') - ;; + TYPE="Windows" + #/// Para Windows: leer la version del registro. + VERSION=$(ogGetRegistryValue $MNTDIR software '\Microsoft\Windows NT\CurrentVersion\ProductName') + ;; esac #/// Mostrar resultado y salir sin errores. @@ -71,6 +71,20 @@ return 0 #/** +# ogGetOsType int_ndisk int_npartition +#@brief Devuelve el tipo del sistema operativo instalado. +#@arg \c int_ndisk nº de orden del disco +#@arg \c int_npartition nº de orden de la partición +#@return OSType +#@note OSType = { Linux, Windows } +#@see ogGetOsVersion +#*/ +function ogGetOsType () { +ogGetOsVersion "$@" | cut -sf1 -d: +} + + +#/** # ogListHardwareInfo #@brief Lista el inventario de hardware de la máquina cliente. #@return TipoDispositivo:Modelo (por determinar) diff --git a/client/nfsexport/scripts/create-image.sh b/client/nfsexport/scripts/create-image.sh index 5bbcf0cd..f3770179 100755 --- a/client/nfsexport/scripts/create-image.sh +++ b/client/nfsexport/scripts/create-image.sh @@ -22,16 +22,21 @@ ogEcho info "$PROG: Origen=$PART, Destino=$IMGFILE" # Obtener tamaño de la partición. SIZE=$(ogGetPartitionSize "$1" "$2") # Reducir el sistema de archvios. +ogEcho info "$PROG: reducir sistema de archivos." REDSIZE=$(ogReduceFs $1 $2) || REDSIZE=$[SIZE+1] if [ $REDSIZE -lt $SIZE ]; then + ogEcho info "$PROG: redimensionar partición a $REDSIZE KB." ogSetPartitionSize $1 $2 $REDSIZE fi # Crear la imagen. +ogEcho info "$PROG: Crear imagen." ogCreateImage "$@" EXITCODE=$? # Restaurar tamaño. if [ $REDSIZE -lt $SIZE ]; then + ogEcho info "$PROG: redimensionar partición a $SIZE KB." ogSetPartitionSize $1 $2 $SIZE + ogEcho info "$PROG: extender sistema de archivos." ogExtendFs $1 $2 fi exit $EXITCODE diff --git a/client/nfsexport/scripts/restore-image.sh b/client/nfsexport/scripts/restore-image.sh index 3cd44ab2..de64e0cd 100755 --- a/client/nfsexport/scripts/restore-image.sh +++ b/client/nfsexport/scripts/restore-image.sh @@ -23,10 +23,15 @@ else fi PART=$(ogDiskToDev "$3" "$4") || exit $? -# Mostrar información. -ogEcho info "$PROG: Origen=$IMGFILE, Destino=$PART" # Restaurar la imagen. -ogRestoreImage "$1" "$2" "$3" "$4" || exit $? +ogEcho info "$PROG: Origen=$IMGFILE, Destino=$PART" +ogRestoreImage "$@" || exit $? # Restaurar tamaño. +ogEcho info "$PROG: Extender sistema de archivos." ogExtendFs $1 $2 +# Cambiar nombre en sistemas Windows. +if [ "$(ogGetOsType $3 $4)" = "Windows" ]; then + ogEcho info "$PROG: Cambiar nombre Windows." + # ogSetWindowsName "$(ogGetHostname)" +fi |