summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2009-10-20 12:45:37 +0000
committerramon <ramongomez@us.es>2009-10-20 12:45:37 +0000
commit1c04494225fab6abe8897ed306176c4be95ef3e3 (patch)
tree41c219bb38bee2ed89b33c6eb6b43e1aca6db597
parentc2b03eb3c234218d8984300dc452f08c06275f12 (diff)
Correcciones en scripts; metafunción ogGetOsType.
git-svn-id: https://opengnsys.es/svn/trunk@394 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-xclient/engine/Disk.lib2
-rwxr-xr-xclient/engine/FileSystem.lib46
-rwxr-xr-xclient/engine/Inventory.lib58
-rwxr-xr-xclient/nfsexport/scripts/create-image.sh5
-rwxr-xr-xclient/nfsexport/scripts/restore-image.sh11
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