summaryrefslogtreecommitdiffstats
path: root/client/shared
diff options
context:
space:
mode:
Diffstat (limited to 'client/shared')
-rw-r--r--client/shared/etc/engine.cfg7
-rwxr-xr-xclient/shared/etc/init/default.sh17
-rw-r--r--client/shared/etc/lang.ca_ES.conf4
-rw-r--r--client/shared/etc/lang.en_GB.conf2
-rw-r--r--client/shared/etc/lang.es_ES.conf5
-rwxr-xr-xclient/shared/etc/preinit/loadenviron.sh2
-rwxr-xr-xclient/shared/etc/preinit/mountrepo.sh23
-rwxr-xr-xclient/shared/scripts/cloneRemoteFromMaster53
-rwxr-xr-xclient/shared/scripts/configureOs14
-rwxr-xr-xclient/shared/scripts/createBaseImage3
-rwxr-xr-xclient/shared/scripts/createDiffImage12
-rwxr-xr-xclient/shared/scripts/deployImage51
-rwxr-xr-xclient/shared/scripts/generateMenuDefault13
-rwxr-xr-xclient/shared/scripts/installOfflineMode60
-rwxr-xr-xclient/shared/scripts/poweroff2
-rwxr-xr-xclient/shared/scripts/reboot3
-rwxr-xr-xclient/shared/scripts/restoreBaseImage3
-rwxr-xr-xclient/shared/scripts/restoreDiffImage16
-rwxr-xr-xclient/shared/scripts/restoreImage2
-rwxr-xr-xclient/shared/scripts/updateCache13
20 files changed, 224 insertions, 81 deletions
diff --git a/client/shared/etc/engine.cfg b/client/shared/etc/engine.cfg
index 82766a2f..895881be 100644
--- a/client/shared/etc/engine.cfg
+++ b/client/shared/etc/engine.cfg
@@ -10,8 +10,8 @@ OGWINCHKDISK=TRUE
#Configuracion de interface restauracion
#Que hacer cuando la cache no tenga espacio libre. [ NONE | FORMAT ] ]
ACTIONCACHEFULL=NONE
-# Protocolo a usar en el caso de que no exita cache o no haya espacio sufiencie.
-RESTOREPROTOCOLNOCACHE=UNICAST
+#Que protocolo de restauracion usar en el caso de que no exista cache o no exista espacio sufiente. [NONE | UNICAST | MULTICAST].NONE retorna error
+RESTOREPROTOCOLNOTCACHE=UNICAST
#script Creacion imagen
IMGPROG="partclone"
@@ -35,3 +35,6 @@ IMGFS=EXT4
# Tiempo de sleep antes de realizar el reboot
OGSLEEP="20"
+
+# Indica si se instala automáticamente el cliente OpenGnSys en el despliegue de un SO (por defecto, no instalar).
+INSTALLOSCLIENT=FALSE
diff --git a/client/shared/etc/init/default.sh b/client/shared/etc/init/default.sh
index 29a8cc04..e87b4b61 100755
--- a/client/shared/etc/init/default.sh
+++ b/client/shared/etc/init/default.sh
@@ -20,13 +20,20 @@ if [ -x $OPENGNSYS/job_executer/init.d/job_executer ]; then
fi
# Arranque de OpenGnSys Client daemon (socket).
-if [ -x "$OPENGNSYS/bin/ogAdmClient" ]; then
- echo "${MSG_LAUNCHCLIENT:-.}"
- [ "$ogactiveadmin" == "true" ] && boot="admin"
- # Indicar fichero de teclado de Qt para el idioma especificado (tipo "es.qmap").
- [ -f /usr/local/etc/${LANG%_*}.qmap ] && export QWS_KEYBOARD="TTY:keymap=/usr/local/etc/${LANG%_*}.qmap"
+echo "${MSG_LAUNCHCLIENT:-.}"
+[ "$ogactiveadmin" == "true" ] && boot="admin"
+# Indicar fichero de teclado de Qt para el idioma especificado (tipo "es.qmap").
+[ -f /usr/local/etc/${LANG%_*}.qmap ] && export QWS_KEYBOARD="TTY:keymap=/usr/local/etc/${LANG%_*}.qmap"
+
+if [ -x "$OPENGNSYS/bin/ogAdmClient" -a "$ogstatus" != "offline" ]; then
# Ejecutar servicio cliente.
$OPENGNSYS/bin/ogAdmClient -f $OPENGNSYS/etc/ogAdmClient.cfg -l $OGLOGFILE -d $LOGLEVEL
+else
+ for FILE in index $OGGROUP $(ogGetIpAddress)
+ do
+ [ -f $OGCAC/menus/$FILE.html ] && OGMENU="$OGCAC/menus/$FILE.html"
+ done
+ $OPENGNSYS/bin/browser -qws $OGMENU
fi
# Si fallo en cliente y modo "admin", cargar shell; si no, salir.
diff --git a/client/shared/etc/lang.ca_ES.conf b/client/shared/etc/lang.ca_ES.conf
index d6257dc0..5220ff6e 100644
--- a/client/shared/etc/lang.ca_ES.conf
+++ b/client/shared/etc/lang.ca_ES.conf
@@ -31,6 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepcion MULTICAST de un fichero"
MSG_ERR_MCASTSENDPARTITION="Error en envio MULTICAST de una particion"
MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepcion MULTICAST de un fichero"
MSG_ERR_PROTOCOLJOINMASTER="Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER"
+MSG_ERR_DONTFORMAT="Error al formatear"
MSG_ERR_DONTMOUNT_IMAGE="Error al montar/reducir la imagen"
MSG_ERR_DONTUNMOUNT_IMAGE="Error al desmontar la imagen"
MSG_ERR_DONTSYNC_IMAGE="Imagen no sincronizable"
@@ -40,6 +41,7 @@ MSG_ERR_SYNCHRONIZING="Error al sincronizar, puede afectar la creacion|restaurac
# Mensajes de avisos.
MSG_DONTMOUNT="Sistema de archivos no montado"
MSG_DONTUNMOUNT="El sistema de archivos no se puede desmontar o no está montado"
+MSG_MOUNT="Sistema de archivos montado"
# Mensajes complementarios para las ayudas.
MSG_64BIT="64 bits"
@@ -233,7 +235,7 @@ MSG_SCRIPTS_FILE_RENAME=" Renombrar fichero-imagen previo: "
MSG_SCRIPTS_CREATE_SIZE=" Calcular espacio (KB) requerido para almacenarlo y el disponible: "
# Script updateCache.
-MSG_SCRIPTS_UPDATECACHE_DOUPDATE="Comprobamos si Actualizacion - existe una imagen con igual nombre pero distinto sum-"
+MSG_SCRIPTS_UPDATECACHE_DOUPDATE="comprovar si es necessari actualitzar el fitxer imatge"
MSG_SCRIPTS_UPDATECACHE_CHECKSIZECACHE="Comprobar que el tamaño de la cache es mayor que el fichero a descargar."
# Script updateCache: para las imágenes sincronizadas tipo dir.
MSG_SCRIPTS_UPDATECACHE_CHECKSIZEDIR="Calculamos el tamaño de la imagen."
diff --git a/client/shared/etc/lang.en_GB.conf b/client/shared/etc/lang.en_GB.conf
index 42a39b9c..737da340 100644
--- a/client/shared/etc/lang.en_GB.conf
+++ b/client/shared/etc/lang.en_GB.conf
@@ -31,6 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepcion MULTICAST de un fichero"
MSG_ERR_MCASTSENDPARTITION="Error en envio MULTICAST de una particion"
MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepcion MULTICAST de un fichero"
MSG_ERR_PROTOCOLJOINMASTER="Error in connecting a Unicast|Multicast session to the master"
+MSG_ERR_DONTFORMAT="Error al formatear"
MSG_ERR_DONTMOUNT_IMAGE="Failed to mount/reduce image"
MSG_ERR_DONTUNMOUNT_IMAGE="Failed to unmount image"
MSG_ERR_DONTSYNC_IMAGE="Not synchronized image"
@@ -40,6 +41,7 @@ MSG_ERR_SYNCHRONIZING="Error al sincronizar, puede afectar la creacion|restaurac
# Warning messages.
MSG_DONTMOUNT="Unmounted filesystem"
MSG_DONTUNMOUNT="Cannot unmount the filesystem"
+MSG_MOUNT="Sistema de archivos montado"
# Help auxiliary menssages.
MSG_64BIT="64 bit"
diff --git a/client/shared/etc/lang.es_ES.conf b/client/shared/etc/lang.es_ES.conf
index 524e95cf..46b87890 100644
--- a/client/shared/etc/lang.es_ES.conf
+++ b/client/shared/etc/lang.es_ES.conf
@@ -31,6 +31,7 @@ MSG_ERR_MCASTRECEIVERFILE="Error en la recepción Multicast de un fichero"
MSG_ERR_MCASTSENDPARTITION="Error en envío Multicast de una partición"
MSG_ERR_MCASTRECEIVERPARTITION="Error en la recepción Multicast de un fichero"
MSG_ERR_PROTOCOLJOINMASTER="Error en la conexión de una sesión Unicast|Multicast con el Master"
+MSG_ERR_DONTFORMAT="Error al formatear"
MSG_ERR_DONTMOUNT_IMAGE="Error al montar/reducir la imagen"
MSG_ERR_DONTUNMOUNT_IMAGE="Error al desmontar la imagen"
MSG_ERR_DONTSYNC_IMAGE="Imagen no sincronizable"
@@ -40,6 +41,7 @@ MSG_ERR_SYNCHRONIZING="Error al sincronizar, puede afectar la creacion|restaurac
# Mensajes de avisos.
MSG_DONTMOUNT="Sistema de archivos no montado"
MSG_DONTUNMOUNT="El sistema de archivos no se puede desmontar o no está montado"
+MSG_MOUNT="Sistema de archivos montado"
# Mensajes complementarios para las ayudas.
MSG_64BIT="64 bits"
@@ -210,6 +212,7 @@ MSG_HELP_ogWaitMountImage="Se espera un tiempo estimado a que se monte la imagen
MSG_HELP_configureOs="Post-configura de arranque del sistema"
MSG_HELP_createBaseImage="Genera imagen básica de la partición"
MSG_HELP_createDiffImage="Genera imagen diferencial de la partición respecto a la imagen básica"
+MSG_HELP_installOfflineMode="Prepara el equipo cliente para el modo offline."
MSG_HELP_partclone2sync="Convierte imagen de partclone en imagen sincronizable."
MSG_HELP_restoreBaseImage="Restaura una imagen básica en una partición"
MSG_HELP_restoreDiffImage="Restaura una imagen diferencial en una partición"
@@ -233,7 +236,7 @@ MSG_SCRIPTS_FILE_RENAME=" Renombrar fichero-imagen previo: "
MSG_SCRIPTS_CREATE_SIZE=" Calcular espacio (KB) requerido para almacenarlo y el disponible: "
# Script updateCache.
-MSG_SCRIPTS_UPDATECACHE_DOUPDATE="Comprobar si actualización -existe una imagen con igual nombre pero distinto sum-"
+MSG_SCRIPTS_UPDATECACHE_DOUPDATE="Comprobar si es necesario actualizar el fichero imagen "
MSG_SCRIPTS_UPDATECACHE_CHECKSIZECACHE="Comprobar que el tamaño de la caché es mayor que el fichero a descargar."
# Script updateCache: para las imágenes sincronizadas tipo dir.
MSG_SCRIPTS_UPDATECACHE_CHECKSIZEDIR="Calcular el tamaño de la imagen."
diff --git a/client/shared/etc/preinit/loadenviron.sh b/client/shared/etc/preinit/loadenviron.sh
index f5f45628..b165ecfd 100755
--- a/client/shared/etc/preinit/loadenviron.sh
+++ b/client/shared/etc/preinit/loadenviron.sh
@@ -119,6 +119,7 @@ export OG_ERR_NOGPT=22 # El disco indicado no contiene una particion GPT
export OG_ERR_IMGSIZEPARTITION=30 # Error al restaurar partición más pequeña que la imagen
export OG_ERR_UPDATECACHE=31 # Error al realizar el comando updateCache
+export OG_ERR_DONTFORMAT=32 # Error al formatear
export OG_ERR_GENERIC=40 # Error imprevisto no definido
export OG_ERR_UCASTSYNTAXT=50 # Error en la generación de sintaxis de transferenica UNICAST
export OG_ERR_UCASTSENDPARTITION=51 # Error en envío UNICAST de partición
@@ -137,3 +138,4 @@ export OG_ERR_DONTSYNC_IMAGE=71 # Imagen no sincronizable (es monolitica)
export OG_ERR_DONTUNMOUNT_IMAGE=72 # Error al desmontar la imagen
export OG_ERR_NOTDIFFERENT=73 # No se detectan diferencias entre la imagen basica y la particion.
export OG_ERR_SYNCHRONIZING=74 # Error al sincronizar, puede afectar la creacion/restauracion de la imagen
+
diff --git a/client/shared/etc/preinit/mountrepo.sh b/client/shared/etc/preinit/mountrepo.sh
index e12990fd..62b1107e 100755
--- a/client/shared/etc/preinit/mountrepo.sh
+++ b/client/shared/etc/preinit/mountrepo.sh
@@ -25,6 +25,29 @@ if [ "$ogactiveadmin" == "true" ]; then
PASS=${PASS:-"og"}
mount.cifs //${ROOTREPO}/ogimages $OGIMG -o rw,serverino,acl,username=opengnsys,password=$PASS
;;
+ local) # TODO: hacer funcion dentro de este script que monte smb
+ # Comprobamos que estatus sea online.
+ if [ "$ogstatus" == "offline" -o "$SERVER" == "" ]; then
+ # Si estatus es offline buscamos un dispositivo con etiqueta repo
+ # y si no existe montamos la cache como repo (si existe).
+ TYPE=$(blkid | grep REPO | awk -F"TYPE=" '{print $2}' | tr -d \")
+ if [ "$TYPE" == "" ]; then
+ [ -d $OGCAC/$OGIMG ] && mount --bind $OGCAC/$OGIMG $OGIMG
+ else
+ mount -t $TYPE LABEL=REPO $OGIMG &>/dev/null
+ fi
+ else
+ # Comprobamos que existe un servicio de samba.
+ smbclient -L $SERVER -N &>/dev/null
+ if [ $? -eq 0 ]; then
+ PASS=$(grep "^[ ]*\(export \)\?OPTIONS=" /scripts/ogfunctions 2>&1 | \
+ sed 's/\(.*\)pass=\(\w*\)\(.*\)/\2/')
+ PASS=${PASS:-"og"}
+ mount.cifs //${ROOTREPO}/ogimages $OGIMG -o rw,serverino,acl,username=opengnsys,password=$PASS
+ fi
+ # TODO: buscar condicion para NFS
+ fi
+ ;;
esac
fi
diff --git a/client/shared/scripts/cloneRemoteFromMaster b/client/shared/scripts/cloneRemoteFromMaster
index c8575915..9aedefde 100755
--- a/client/shared/scripts/cloneRemoteFromMaster
+++ b/client/shared/scripts/cloneRemoteFromMaster
@@ -54,6 +54,9 @@
#@version 1.0.3 - Habilita el uso de la variable OGWINREDUCE=TRUE|TRUE para reducir el sistema de archivos a enviar
#@author Antonio J. Doblas Viso. Universidad de Malaga.
#@date 2011/12/22
+#@version 1.0.6 - Uso de la funcion ogExecuteAndLog
+#@author Antonio J. Doblas Viso. Universidad de Malaga.
+#@date 2012/02/12
#*/ ##
#test 1. cliente sin particiones. Detectado TODO: crear estrucutras de particiones
@@ -63,25 +66,35 @@
#test 5. master sin origen particion.
#test 6. master sin origen fichero.
-#Carga del configurador del engine
-[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
-
+TIME1=$SECONDS
+PROG="$(basename $0)"
trap "pkill faucet; exit 1" 0 1 2 3 6 9 14 15
-TIME1=$SECONDS
-PROG="$(basename $0)"
+#AYUDA
if [ $# -lt 1 -o "$1" == "help" ]; then
- echo "cloneRemoteFromMaster ipmaster disk init [MULTICAST|UNICAST] session disk part tool comp"
- exit 1
+ echo "cloneRemoteFromMaster ipmaster disk init [MULTICAST|UNICAST] session disk part tool comp"
+ exit 1
fi
-if [ $# -lt 6 ]; then
- ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ipMaster SOURCE_disco SOURCE_particion [MULTICAT|UNICAST] SESSION TARGER_disck TARGET_partition"
+#ERROR
+if [ $# -lt 6 ]; then
+ ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ipMaster SOURCE_disco SOURCE_particion [MULTICAST|UNICAST] SESSION TARGET_disk TARGET_partition"
exit $?
fi
-# Obtener información de los parámetros de entrada.
+#Load engine configurator from engine.cfg file.
+#Carga el configurador del engine desde el fichero engine.cfg
+# Valores por defecto: #IMGPROG="partclone" ; #IMGCOMP="lzop" ; #IMGEXT="img" #IMGREDUCE="TRUE"
+[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
+
+# Clear temporary file used as log track by httpdlog
+# Limpia los ficheros temporales usados como log de seguimiento para httpdlog
+echo " " > $OGLOGCOMMAND
+
+ogEcho log session "[1] $MSG_SCRIPTS_START $0 $*"
+
+# Procesar parámetros de entrada
HOSTIP=`ogGetIpAddress`
if [ -z "$HOSTIP" ]
then
@@ -115,7 +128,7 @@ pkill faucet
# Preparando Instrucción según sea Master o Client
case $MASTERIP in
$HOSTIP)
- echo "[1] Equipo Master preparando el origen de los datos a enviar"
+ ogEcho log session "[1] Equipo Master preparando el origen de los datos a enviar"
ogGetPath $2 $3.img &>/dev/null; RC=$?;
ogDiskToDev $2 $3 &>/dev/null; RETVAL=$?;
@@ -168,15 +181,13 @@ case $MASTERIP in
fi
case "${PROTOCOL^^}" in
MULTICAST)
- ogEcho log session "[29] Transferencia Multicast"
- ogEcho log "ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR"
- ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR || RETVAL=$?
+ ogEcho log session "[29] Transferencia Multicast: ogMcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONMCASTSERVER $TOOLCLONE $COMPRESOR "
+ ogExecAndLog session "ogMcastSendPartition" "$DISKSOURCE" "$PARTSOURCE" "$SESSIONMCASTSERVER" "$TOOLCLONE" "$COMPRESOR" || RETVAL=$?
;;
UNICAST)
sleep 60
- ogEcho log session "[29] Transferencia Unicast"
- ogEcho log "ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR"
- ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR || RETVAL=$?
+ ogEcho log session "[29] Transferencia Unicast: ogUcastSendPartition $DISKSOURCE $PARTSOURCE $SESSIONUCASTSERVER $TOOLCLONE $COMPRESOR"
+ ogExecAndLog session "ogUcastSendPartition" "$DISKSOURCE" "$PARTSOURCE" "$SESSIONUCASTSERVER" "$TOOLCLONE" "$COMPRESOR" || RETVAL=$?
;;
esac
@@ -264,8 +275,8 @@ case $MASTERIP in
SIZEIMAGE=$(echo $INFOEXTRA | awk '{print $4}')
ogEcho log "$INFOEXTRA = herramienta= $TOOLCLONE compresor= $COMPRESOR size= $SIZEIMAGE"
ogMount $DISKTARGET $PARTTARGET || ogFormat $DISKTARGET $PARTTARGET
- SIZEPARTTARGET=$(parted `ogDiskToDev $DISKTARGET $PARTTARGET` unit kB print | grep Disk | awk -F" " '{print $3}' | tr -d kB);
-
+ #SIZEPARTTARGET=$(parted `ogDiskToDev $DISKTARGET $PARTTARGET` unit kB print | grep Disk | awk -F" " '{print $3}' | tr -d kB);
+ SIZEPARTTARGET=$(ogGetPartitionSize $DISKTARGET $PARTTARGET )
ogEcho log session "[28] comprobando que el tamaño de la imagen $SIZEIMAGE es menor que el de la particion destino $SIZEPARTTARGET"
# comprobamos que el tamaño de a imagen es menor que la del cliente.
if [ "$SIZEIMAGE" -lt "$SIZEPARTTARGET" ]
@@ -274,11 +285,11 @@ case $MASTERIP in
case "${PROTOCOL^^}" in
MULTICAST)
ogEcho log session "ogMcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONMCASTCLIENT $TOOLCLONE $COMPRESOR"
- ogMcastReceiverPartition "$DISKTARGET" "$PARTTARGET" "$SESSIONMCASTCLIENT" "$TOOLCLONE" "$COMPRESOR" || exit $(ogRaiseError $OG_ERR_MCASTRECEIVERPARTITION " l251 "; echo $?)
+ ogExecAndLog command "ogMcastReceiverPartition" "$DISKTARGET" "$PARTTARGET" "$SESSIONMCASTCLIENT" "$TOOLCLONE" "$COMPRESOR" || exit $(ogRaiseError $OG_ERR_MCASTRECEIVERPARTITION " l251 "; echo $?)
;;
UNICAST)
ogEcho log session "ogUcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONUCASTCLIENT $TOOLCLONE $COMPRESOR"
- ogUcastReceiverPartition $DISKTARGET $PARTTARGET $SESSIONUCASTCLIENT $TOOLCLONE $COMPRESOR || exit $(ogRaiseError $OG_ERR_UCASTRECEIVERPARTITION " l230 "; echo $?)
+ ogExecAndLog command "ogUcastReceiverPartition" "$DISKTARGET" "$PARTTARGET" "$SESSIONUCASTCLIENT" "$TOOLCLONE" "$COMPRESOR" || exit $(ogRaiseError $OG_ERR_UCASTRECEIVERPARTITION " l230 "; echo $?)
;;
esac
if which configureOsCustom &>/dev/null; then
diff --git a/client/shared/scripts/configureOs b/client/shared/scripts/configureOs
index 45a2de86..2aa5288d 100755
--- a/client/shared/scripts/configureOs
+++ b/client/shared/scripts/configureOs
@@ -69,15 +69,19 @@ case "$OSTYPE" in
# Registrar en Windows que la partición indicada es su nueva unidad C:\
ogWindowsRegisterPartition $1 $2 C $1 $2
#ogLoadHiveWindows $1 $2; ogSetWindowsChkdisk $OGWINCHKDISK; ogUpdateHiveWindows
- # Instalar cliente para Windows (no activar en sistema en produccion ver ticket 604).
- ogInstallMiniSetup $1 $2 postconf.cmd
- ogInstallWindowsClient $1 $2 postconf.cmd
+ # Instalar cliente para Windows si se indica en la variable INSTALLOSCLIENT.
+ if [ "${INSTALLOSCLIENT^^}" == "TRUE" ]; then
+ ogInstallMiniSetup $1 $2 postconf.cmd
+ ogInstallWindowsClient $1 $2 postconf.cmd
+ fi
;;
Linux) # Postconfiguración de GNU/Linux.
## Install and Configure Grub based on OS installed and Grub 1st stage location.
ogGrubInstallPartition $1 $2
- # Instalar cliente para Linux.
- ogInstallLinuxClient $1 $2
+ # Instalar cliente para GNU/Linux si se indica en la variable INSTALLOSCLIENT.
+ if [ "${INSTALLOSCLIENT^^}" == "TRUE" ]; then
+ ogInstallLinuxClient $1 $2
+ fi
;;
MacOS) # Postconfiguración de Mac OS X.
# Fichero indicador de activación de postconfiguración.
diff --git a/client/shared/scripts/createBaseImage b/client/shared/scripts/createBaseImage
index 1e35aff4..ed9255b4 100755
--- a/client/shared/scripts/createBaseImage
+++ b/client/shared/scripts/createBaseImage
@@ -102,8 +102,9 @@ TIME2=$SECONDS
ogEcho log session "[40] $MSG_HELP_ogCreateImage $1 $2 $3 $4 "
# Si existe el fichero de la imagen se hace copia de seguridad y se redimensiona, si no existe se crea.
+# Bloqueo la imagen. Si esta en modo lectura dara error y nos salimos
ogEcho log session "[50] $MSG_HELP_ogCreateFileImage."
-ogLockImage "$3" "/$4.$IMGEXT"
+ogLockImage "$3" "/$4.$IMGEXT" || exit $?
ogCreateFileImage $3 "$4" $IMGEXT $SIZEREQUIRED
# Creamos la lista del contenido y lo situamos en la particion a copiar.
diff --git a/client/shared/scripts/createDiffImage b/client/shared/scripts/createDiffImage
index 69b90166..862c05c8 100755
--- a/client/shared/scripts/createDiffImage
+++ b/client/shared/scripts/createDiffImage
@@ -95,8 +95,9 @@ ORIG=$(ogMount $1 $2) || exit $(ogRaiseError session $OG_ERR_PARTITION "$1 $2"
DIFFDIR="$(ogGetParentPath "$3" "/$5")"
DIFFFILE="$DIFFDIR/$5.$DIFFEXT"
-ogLockImage "$3" "/$4.$IMGEXT"
-ogLockImage "$3" "/$5.$DIFFEXT"
+# Bloqueo las imagenes -> Si no hay acceso de escritura dara error y nos saldremos.
+ogLockImage "$3" "/$4.$IMGEXT" || exit $?
+ogLockImage "$3" "/$5.$DIFFEXT" || exit $?
# Comprobar consistencia del sistema de archivos.
echo " " > $OGLOGCOMMAND
@@ -138,13 +139,6 @@ ogLock $1 $2
TIMEAUX3=$[SECONDS-TIME2]
ogEcho log session " $MSG_SCRIPTS_TASK_END $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX3/60]m $[TIMEAUX3%60]s"
-# Del fichero de acl de la partición extraemos las acl de los ficheros de la diferencial
-if [ "$FSTYPE" == "NTFS" ]; then
- ogEcho log session "[55] $MSG_HELP_ogAclFilter "
- ogAclFilter
- TIMEAUX4=$[SECONDS-TIMEAUX3]
- ogEcho log session " $MSG_SCRIPTS_TASK_END $MSG_SCRIPTS_TIME_PARTIAL: $[TIMEAUX4/60]m $[TIMEAUX4%60]s"
-fi
TIMEAUX5=$[SECONDS-TIMEAUX3]
# Configuro la informacion del tamaño de los datos en /tmp/ogimg.info
diff --git a/client/shared/scripts/deployImage b/client/shared/scripts/deployImage
index 724d515e..89d776a6 100755
--- a/client/shared/scripts/deployImage
+++ b/client/shared/scripts/deployImage
@@ -14,6 +14,8 @@
#@exception OG_ERR_LOCKED 4 partición bloqueada por otra operación.
#@exception OG_ERR_IMAGE 5 error al restaurar la imagen del sistema.
#@exception OG_ERR_IMGSIZEPARTITION 30 Tamaño de la particion es menor al tamaño de la imagen.
+#@exception OG_ERR_NOTCACHE No existe cache -15-
+#@exception OG_ERR_CACHESIZE Tamaño de la paticion menor al archivo a descargar -16-
#@version 1.0.1 - Separación en protocolos de transferencia y postconfiguracion
#@author Antonio J. Doblas Viso. Universidad de Málaga
#@date 2011-05-11
@@ -26,15 +28,16 @@
#@version 1.0.5 - Renominación del script como "deployImage".
#@author Antonio J. Doblas Viso y Ramón M. Gómez.
#@date 2013-12-04
+#@version 1.0.6 - Se añade la gestión de errores de la CACHE cuando en el engine.cfg se define RESTOREPROTOCOLNOCACHE=NONE.
+#@author Antonio J. Doblas Viso.
+#@date 2015-02-23
#**/
#Descripcion:
-# La interfaz detecta:
-# Si Repositorio es el global (REPO) realiza un deploy.
-# Si Repositorio es local (CACHE) realiza un restoreImage CACHE
-# El deploy, si detecta que el cliente no tiene una cache con espacio suficiente
-# -- reazlia un ogRestore REPO
+# Si Repositorio es el global (REPO) realiza un deploy.
+# Si Repositorio es local (CACHE) realiza un restoreImage CACHE
+# El deploy, si detecta que el cliente no tiene una CACHE o no tiene espacio suficiente consulta el engine.cfg RESTOREPROTOCOLNOCACHE
@@ -111,17 +114,35 @@ case "$REPO" in
NEXTOPERATION=CACHE
;;
15|16)
+ # no se permite usar la cache (no existe(15) o no espacio sufiente (16). Se consulta engine.cfg para RESTOREPROTOCOLNOCACHE [ multicast unicast none ]
ogEcho log session "[50] $MSG_ERR_NOTCACHE ; $MSG_ERR_CACHESIZE "
- ogEcho log session "[50] $MSG_SCRIPTS_CHECK_ENGINE "
- if [ "$RESTOREPROTOCOLNOCACHE" == "MULTICAST" ]; then
- case "$PROTO" in
- MULTICAST) NEXTOPERATION=MULTICAST ;;
- TORRENT) NEXTOPERATION=UNICAST ;;
- UNICAST) NEXTOPERATION=UNICAST ;;
- esac
- else
- NEXTOPERATION=UNICAST
- fi
+ ogEcho log session "[50] $MSG_SCRIPTS_CHECK_ENGINE: RESTOREPROTOCOLNOTCACHE=$RESTOREPROTOCOLNOTCACHE "
+ case "$RESTOREPROTOCOLNOTCACHE" in
+ MULTICAST)
+ case "$PROTO" in
+ MULTICAST) NEXTOPERATION=MULTICAST ;;
+ TORRENT) NEXTOPERATION=UNICAST ;;
+ UNICAST) NEXTOPERATION=UNICAST ;;
+ esac
+ ;;
+ UNICAST)
+ NEXTOPERATION=UNICAST
+ ;;
+ NONE)
+ case $RETVAL in
+ 15)
+ ogEcho log session "[100] $MSG_ERR_NOTCACHE"
+ ogRaiseError session $OG_ERR_NOTCACHE "NOT CACHE"
+ exit $?
+ ;;
+ 16)
+ ogEcho log session "[100] $MSG_ERR_CACHESIZE "
+ ogRaiseError session $OG_ERR_CACHESIZE "CACHE FULL"
+ exit $?
+ ;;
+ esac # del segundo RETAVAL
+ ;;
+ esac # del RESTOREPROTOCOLNOTCACHE
;;
esac
;;
diff --git a/client/shared/scripts/generateMenuDefault b/client/shared/scripts/generateMenuDefault
index 7a9abd6e..09e4300f 100755
--- a/client/shared/scripts/generateMenuDefault
+++ b/client/shared/scripts/generateMenuDefault
@@ -9,7 +9,7 @@ source /tmp/net-$DEVICE.conf
FILEINFOHTML=$OGLOG/`ogGetIpAddress`.info.html
FILEINFOCACHE=$OGLOG/`ogGetIpAddress`.cache.txt
ogMountCache 2>/dev/null
-CACHECONTENIDO=`ls -m $OGCAC/$OGIMG 2>/dev/null`
+CACHECONTENIDO="ls -m $OGCAC/$OGIMG 2>/dev/null"
SPEED=$(LANG=C ethtool $DEVICE 2>/dev/null | awk '$1~/Speed/ {print $2}')
case "${SPEED,,}" in
@@ -23,8 +23,13 @@ case "${DUPLEX,,}" in
full) ;;
*) DUPLEX="<font color=\"red\">$DUPLEX</font>"
esac
+
CACHESIZEFREE=$(ogGetFreeSize `ogFindCache`)
-expr $CACHESIZEFREE / 1024 > $FILEINFOCACHE 2>/dev/null && echo '.MB,' >> $FILEINFOCACHE
+if [ $CACHESIZEFREE == 0 ]; then
+ echo '0.MB,' > $FILEINFOCACHE
+else
+ expr $CACHESIZEFREE / 1024 > $FILEINFOCACHE 2>/dev/null && echo '.MB,' >> $FILEINFOCACHE
+fi
# Crear menú por defecto.
cat > $FILEINFOHTML << EOT
@@ -72,7 +77,5 @@ cat >> $FILEINFOHTML << EOT
EOT
# Crear contenido de la caché.
-cat >> $FILEINFOCACHE << EOT
-$CACHECONTENIDO
-EOT
+eval $CACHECONTENIDO >> $FILEINFOCACHE
diff --git a/client/shared/scripts/installOfflineMode b/client/shared/scripts/installOfflineMode
new file mode 100755
index 00000000..d9ff2459
--- /dev/null
+++ b/client/shared/scripts/installOfflineMode
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+#/**
+# installOfflineMode
+#@brief Prepara el equipo cliente para el modo offline.
+#@param no
+#@return
+#@exception OG_ERR_NOTFOUND Fichero o dispositivo no encontrado.
+#@exception OG_ERR_NOTCACHE No existe cache.
+#@author Irina Gomez. ETSII. Universidad de Sevilla
+#@date 2013/12/5
+#*/ ##
+
+PROG="$(basename $0)"
+if [ "$*" == "help" ]; then
+ ogHelp "$PROG $MSG_HELP_installOfflineMode" \
+ "$PROG [ no param ]"
+ exit 0
+fi
+
+ogEcho log session "$MSG_HELP_installOfflineMode"
+# Cargamos las variables de entorno.
+[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
+DIRTFTP="/opt/oglive/tftpboot"
+DIROGCLIENT="$DIRTFTP/ogclient"
+# Comprobamos que el DIROGCLIENT esta montado desde repo
+df |grep "$(ogGetRepoIp).*$DIRTFTP" &>/dev/null || ogRaiseError $OG_ERR_NOTFOUND "REPO OGclient" || exit $?
+
+# Copiamos el kernel y el initrd.
+ogEcho log session " [10] updateBootCache"
+updateBootCache || ogRaiseError $OG_ERR_NOTCACHE || exit $?
+
+# Creamos los dir necesarios.
+ogEcho log session " [40] mkdir -p $OGCAC/{ogclient, menus, log}."
+[ -d $OGCAC/menus/images/iconos ] || mkdir -p $OGCAC/menus/images/iconos
+[ -d $OGCAC/ogclient ] || mkdir -p $OGCAC/ogclient
+[ -d $OGCAC/log ] || mkdir -p $OGCAC/log
+[ -d $OGCAC/opt/opengnsys/images ] || mkdir -p $OGCAC/opt/opengnsys/images
+
+# Comparamos el cliente en el server y en cache
+ogEcho log session " [60] cp $DIROGCLIENT/ogclient.sqfs $OGCAC/ogclient/"
+SERVEROGCLIENT=$(cat $DIROGCLIENT/ogclient.sqfs.sum 2>/dev/null)
+CACHEOGCLIENT=$(cat $OGCAC/ogclient/ogclient.sqfs.sum 2>/dev/null)
+
+if [ "$CACHEOGCLIENT" != "$SERVEROGCLIENT" ]; then
+ cp $DIROGCLIENT/ogclient.sqfs $OGCAC/ogclient/
+ cp $DIROGCLIENT/ogclient.sqfs.sum $OGCAC/ogclient/
+fi
+
+# Si se ha generado el menu de inicio lo copiamos a cache.
+IPCLIENT=$(ogGetIpAddress)
+MENU=$OGLOG/$IPCLIENT.info.html
+ICONO="images/iconos/logoopengnsys.png"
+[ -f $MENU ] || generateMenuDefault
+ogEcho log session " [90] cp $MENU $OGCAC/menus/$IPCLIENT.html"
+cp $MENU $OGCAC/menus/$IPCLIENT.html
+sed -i s/"..\/images"/"images"/g $OGCAC/menus/$IPCLIENT.html
+wget --no-check-certificate https://$(ogGetRepoIp)/opengnsys/$ICONO -O $OGCAC/menus/$ICONO
+
+
diff --git a/client/shared/scripts/poweroff b/client/shared/scripts/poweroff
index 9af4d669..c108e08e 100755
--- a/client/shared/scripts/poweroff
+++ b/client/shared/scripts/poweroff
@@ -21,7 +21,7 @@ BUSYBOX=${BUSYBOX:-"busybox"}
# Retardo para dar lugar al registro en cola de acciones.
sleep 5
# Parar Browser para evitar "cuelgues".
-pkill browser
+[ "$ogstatus" == "offline" ] || pkill browser
# Apagar.
$BUSYBOX poweroff
diff --git a/client/shared/scripts/reboot b/client/shared/scripts/reboot
index 87df09d0..87e30e21 100755
--- a/client/shared/scripts/reboot
+++ b/client/shared/scripts/reboot
@@ -34,7 +34,8 @@ BUSYBOX=${BUSYBOX:-"busybox"}
# Retardo para dar lugar al registro en cola de acciones.
sleep $TIME
# Parar Browser para evitar "cuelgues".
-pkill browser
+[ "$ogstatus" == "offline" ] || pkill browser
# Reiniciar.
$BUSYBOX reboot
+
diff --git a/client/shared/scripts/restoreBaseImage b/client/shared/scripts/restoreBaseImage
index e424baa8..c4e87ba4 100755
--- a/client/shared/scripts/restoreBaseImage
+++ b/client/shared/scripts/restoreBaseImage
@@ -137,6 +137,7 @@ ogExecAndLog command ogRestoreInfoImage $3 $4
# Llamar al script de post-configuración del sistema operativo.
# Si a este script lo ha llamado el script restoreDiffImage no post-configuramos
if [ "$(ogGetCaller)" != "restoreDiffImage" ];then
+ ogExecAndLog command ogRestoreAclImage $3 $4
if which configureOsCustom &>/dev/null; then
ogEcho log session "[90] configureOsCustom"
configureOsCustom "$3" "$4" "$1" "$2"
@@ -145,6 +146,8 @@ if [ "$(ogGetCaller)" != "restoreDiffImage" ];then
configureOs $3 $4
fi
fi
+TIMEAUX3=$[SECONDS-TIMEAUX2]
+ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX3/60]m $[TIMEAUX3%60]s"
TIME=$[SECONDS-TIME1]
ogEcho log session "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m $[TIME%60]s"
diff --git a/client/shared/scripts/restoreDiffImage b/client/shared/scripts/restoreDiffImage
index 20745b3e..e10a395a 100755
--- a/client/shared/scripts/restoreDiffImage
+++ b/client/shared/scripts/restoreDiffImage
@@ -1,15 +1,15 @@
#!/bin/bash
#/**
-# restoreiDiffSquash
+# restoreDiffImage
#@brief Script de ejemplo para restaurar una imagen diferencial.
#@brief (puede usarse como base para el programa de restauración de imágenes usado por OpenGNSys Admin).
#@param 1 REPO|CACHE
#@param 2 imagen basica
-#@param 2 imagen diferencial
-#@param 3 disco
-#@param 4 particion
-#@param 5 protocolo
-#@param 6 opciones protocolo
+#@param 3 imagen diferencial
+#@param 4 disco
+#@param 5 particion
+#@param 6 protocolo
+#@param 7 opciones protocolo
#@return
#@exception OG_ERR_FORMAT # 1 formato incorrecto.
#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado
@@ -122,6 +122,9 @@ ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[T
# creando enlaces y restableciendo ACL (en windows)
ogEcho log session "[70] $MSG_HELP_ogRestoreInfoImage"
ogExecAndLog command ogRestoreInfoImage "$4" "$5"
+ogExecAndLog command gRestoreAclImage "$4" "$5"
+TIMEAUX3=$[SECONDS-TIMEAUX2]
+ogEcho log session " $MSG_SCRIPTS_TASK_END, $MSG_SCRIPTS_TIME_PARTIAL : $[TIMEAUX3/60]m $[TIMEAUX3%60]s"
# Llamar al script de post-configuración del sistema operativo.
if which configureOsCustom &>/dev/null; then
@@ -136,4 +139,3 @@ ogEcho log session "[100] $MSG_SCRIPTS_END $MSG_SCRIPTS_TIME_TOTAL: $[TIME/60]m
# Si ha habido problema al sincronizar nos salimos con error
[ $RETVAL == 0 ] || exit $OG_ERR_SYNCHRONIZING
-
diff --git a/client/shared/scripts/restoreImage b/client/shared/scripts/restoreImage
index 4575bf6c..6d5198aa 100755
--- a/client/shared/scripts/restoreImage
+++ b/client/shared/scripts/restoreImage
@@ -54,7 +54,7 @@ case "$PROTO" in
ogEcho log session "[40] ogMcastReceiverPartition $DISK $PART $PORT $TOOL $COMPRESS"
ogMcastRequest "$IMGNAME.img" "$PROTOOPT"
ogExecAndLog command ogMcastReceiverPartition "$DISK" "$PART" "$PORT" "$TOOL" "$COMPRESS"
- RETVAL=${PIPESTATUS[0]}
+ RETVAL=$?
;;
*) # Protocolo desconocido.
ogRaiseError session $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO|CACHE imagen ndisco nparticion [ UNICAST|MULTICAST opciones ]"
diff --git a/client/shared/scripts/updateCache b/client/shared/scripts/updateCache
index 889b9bf4..8760ddd2 100755
--- a/client/shared/scripts/updateCache
+++ b/client/shared/scripts/updateCache
@@ -75,7 +75,6 @@ else
# Si la imagen es monolitica y ha elegido protocolo = RSYNC salimos con error.
[ $PROTOCOLO == "RSYNC" ] && exit $(ogRaiseError session $OG_ERR_DONTSYNC_IMAGE "REPO $2"; echo $?)
IMGSYNC=FALSE
- #TODO: ogUpdateCacheIsNecesary debe borrar la imagen que tenga igual nombre pero distinto sum-
ogUpdateCacheIsNecesary "$1" "$2" "$PROTOCOLO"
RETVAL=$?
fi
@@ -115,7 +114,7 @@ else
SIZEREQUIRED=$FILESIZE
fi
-#ERROR CACHESIZE 16
+#ERROR CACHESIZE 16 (tamanyo de la CACHE insuficiente)
if [ "$SIZEREQUIRED" -ge "$CACHESIZE" ]
then
ogEcho log session "$MSG_WARNING: $MSG_ERR_CACHESIZE: $2 = $SIZEREQUIRED > CACHE = $CACHESIZE"
@@ -123,14 +122,16 @@ then
exit $?
fi
-ogEcho log session "$MSG_SCRIPTS_UPDATECACHE_IFNOTCACHEDO"
-#ERROR CACHESIZE 16
+
+#ERROR CACHESIZE 16 (Espacio libre en CACHE insuficiente)
if [ "$SIZEREQUIRED" -ge "$CACHESIZEFREE" ]
then
- # ogEcho log session "[ ] No hay espacio sufiente en la CACHE, detectar que hacer con engine.cfg"
+ ogEcho log session "$MSG_SCRIPTS_UPDATECACHE_IFNOTCACHEDO: ACTIONCACHEFULL=$ACTIONCACHEFULL"
case "$ACTIONCACHEFULL" in
NONE)
- NEXTOPERATION=UNICAST
+ ogEcho log session "$MSG_WARNING: $MSG_ERR_CACHESIZE: $2 = $SIZEREQUIRED > FREE SPACE CACHE = $CACHESIZEFREE"
+ ogRaiseError session $OG_ERR_CACHESIZE "CACHE FULL, NO SPACE FREE"
+ exit $?
;;
FORMAT)
ogEcho log session "[51] $MSG_HELP_ogFormatCache "