diff options
Diffstat (limited to 'client/shared/scripts')
l---------[-rwxr-xr-x] | client/shared/scripts/bootLinux | 36 | ||||
-rwxr-xr-x | client/shared/scripts/bootOs | 12 | ||||
l---------[-rwxr-xr-x] | client/shared/scripts/bootWindows | 31 | ||||
-rwxr-xr-x | client/shared/scripts/cloneRemoteFromMaster | 4 | ||||
-rwxr-xr-x | client/shared/scripts/configureOs | 20 | ||||
-rwxr-xr-x | client/shared/scripts/createImage | 47 | ||||
-rwxr-xr-x | client/shared/scripts/deployImage | 37 | ||||
-rwxr-xr-x | client/shared/scripts/listPartitions | 3 | ||||
-rwxr-xr-x | client/shared/scripts/restoreImage | 12 | ||||
-rwxr-xr-x | client/shared/scripts/runAplicationX.sh | 8 | ||||
-rwxr-xr-x | client/shared/scripts/runhttplog.sh | 30 | ||||
-rwxr-xr-x | client/shared/scripts/updateBootCache | 55 | ||||
-rwxr-xr-x | client/shared/scripts/updateCache | 78 |
13 files changed, 238 insertions, 135 deletions
diff --git a/client/shared/scripts/bootLinux b/client/shared/scripts/bootLinux index e20b9489..d19be900 100755..120000 --- a/client/shared/scripts/bootLinux +++ b/client/shared/scripts/bootLinux @@ -1,35 +1 @@ -#!/bin/bash -# Scirpt de ejemplo para iniciar Linux desde partición de arranque. -# (puede usarse como base para el programa de arranque usado por OpenGNSys Admin). - -PROG="$(basename $0)" -if [ $# -ne 2 ]; then - ogRaiseError $OG_ERR_FORMAT "Formato: $PROG ndisco nparticion" - exit $? -fi - -echo "[0] Inicio del proceso de arranque." -PART=$(ogDiskToDev "$1" "$2") || exit $? - -echo "[10] Desmontar todos los sistemas de archivos." -sync -for (( i=1; i <= $(ogDiskToDev | wc -w); i++ )); do - ogUnmountAll $i 2>/dev/null -done -ETC=$(ogGetPath $1 $2 /etc) -if [ -n "$ETC" ]; then - echo "[30] Asignar nombre Linux \"$NAME\"." - NAME=$(ogGetHostname) - NAME=${NAME:-"pc"} - echo "$NAME" >$ETC/hostname 2>/dev/null - echo "[50] Actaualizar fstab con particion raiz \"$PART\"." - awk -v P="$PART " '{ if ($2=="/") {sub(/^.*$/, P, $1)} - print } ' $ETC/fstab >/tmp/fstab - mv /tmp/fstab $ETC/fstab -fi -echo "[70] Desmontar cache local." -ogUnmountCache - -echo "[90] Arrancar sistema operativo." -ogBoot $1 $2 - +bootOs
\ No newline at end of file diff --git a/client/shared/scripts/bootOs b/client/shared/scripts/bootOs index 71a9fe73..78d779be 100755 --- a/client/shared/scripts/bootOs +++ b/client/shared/scripts/bootOs @@ -10,9 +10,16 @@ fi echo "[0] Inicio del proceso de arranque." PART=$(ogDiskToDev "$1" "$2") || exit $? -NAME=$(ogGetHostname) +NAME="$(ogGetHostname)" NAME=${NAME:-"pc"} OSTYPE=$(ogGetOsType $1 $2) +# Borrar marcas de arrranque de todos los Windows instalados en el disco. +if [ "$OSTYPE" == "Windows" ]; then + for (( i=1; i<=$(ogGetPartitionsNumber $1); i++ )); do + [ "$(ogGetOsType $1 $i)" == "Windows" ] && ogMount $1 $i &>/dev/null + done + rm -f /mnt/*/ogboot.* +fi echo "[10] Desmontar todos los sistemas de archivos." sync @@ -21,7 +28,8 @@ for (( i=1; i <= $(ogDiskToDev | wc -w); i++ )); do done case "$OSTYPE" in Windows) - echo "[30] Activar particion de Windows $PART." + echo "[30] Mostrar y activar particion de Windows $PART." + [ $(ogGetPartitionType $1 $2) == "HNTFS" ] && ogUnhidePartition $1 $2 ogSetPartitionActive $1 $2 echo "[50] Asignar nombre Windows \"$NAME\" y usuario por defecto." ogSetWindowsName $1 $2 "$NAME" diff --git a/client/shared/scripts/bootWindows b/client/shared/scripts/bootWindows index e92e484a..d19be900 100755..120000 --- a/client/shared/scripts/bootWindows +++ b/client/shared/scripts/bootWindows @@ -1,30 +1 @@ -#!/bin/bash -# Scirpt de ejemplo para iniciar Windows con partición de arranque. -# (puede usarse como base para el programa de arranque usado por OpenGNSys Admin). - -PROG="$(basename $0)" -if [ $# -ne 2 ]; then - ogRaiseError $OG_ERR_FORMAT "Formato: $PROG ndisco nparticion" - exit $? -fi - -echo "[0] Inicio del proceso de arranque." -PART=$(ogDiskToDev "$1" "$2") || exit $? - -echo "[10] Desmontar todos los sistemas de archivos." -sync -for (( i=1; i <= $(ogDiskToDev | wc -w); i++ )); do - ogUnmountAll $i 2>/dev/null -done -echo "[30] Activar particion de Windows $PART." -ogSetPartitionActive $1 $2 -echo "[50] Asignar nombre Windows \"$NAME\"." -NAME=$(ogGetHostname) -NAME=${NAME:-"pc"} -ogSetWindowsName $1 $2 "$NAME" -echo "[70] Desmontar cache local." -ogUnmountCache - -echo "[90] Arrancar sistema operativo." -ogBoot $1 $2 - +bootOs
\ No newline at end of file diff --git a/client/shared/scripts/cloneRemoteFromMaster b/client/shared/scripts/cloneRemoteFromMaster index 6516b587..cc0a936b 100755 --- a/client/shared/scripts/cloneRemoteFromMaster +++ b/client/shared/scripts/cloneRemoteFromMaster @@ -247,7 +247,9 @@ case $MASTERIP in SIZEIMAGE=$(echo $INFOEXTRA | awk '{print $4}') echo -n "[26] $INFOEXTRA = herramienta= $TOOLCLONE compresor= $COMPRESOR size= $SIZEIMAGE " ogMount $DISKTARGET $PARTTARGET || ogFormat $DISKTARGET $PARTTARGET - SIZEPARTTARGET=$(parted `ogDiskToDev $DISKTARGET $PARTTARGET` unit kB print | awk '{y=x; x=$4};END{print y}' | tr -d kB) + #SIZEPARTTARGET=$(parted `ogDiskToDev $DISKTARGET $PARTTARGET` unit kB print | awk '{y=x; x=$4};END{print y}' | tr -d kB) + SIZEPARTTARGET=$(parted `ogDiskToDev $DISKTARGET $PARTTARGET` unit kB print | grep Disk | awk -F" " '{print $3}' | tr -d kB); + echo "[29] 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" ] diff --git a/client/shared/scripts/configureOs b/client/shared/scripts/configureOs index 64249c9b..c9660d4d 100755 --- a/client/shared/scripts/configureOs +++ b/client/shared/scripts/configureOs @@ -15,6 +15,9 @@ #@version 1.0.1 - Configura el sector de la particion y el gestor de windows para iniciarse desde cualquier particion. #@author Antonio J. Doblas Viso. Universidad de Malaga. #@date 2011-05-20 +#@version 1.0.2 - Configura el sector de la particion y el gestor de linux para iniciarse desde cualquier particion. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011-11-22 @@ -32,15 +35,20 @@ FLAGACTIVE=$(ogGetPartitionActive $1) # Cambiar nombre en sistemas Windows y quitar usuario de acceso por defecto. if [ "$(ogGetOsType $1 $2)" = "Windows" ]; then + # Cambiar nombre en sistemas Windows. HOST=$(ogGetHostname) HOST=${HOST:-"pc"} - echo " Cambiar nombre Windows a \"$HOST\" " ogSetWindowsName $1 $2 "$HOST" - #ogSetWinlogonUser $1 $2 " " # Descomentar para cambiar usuario de inicio. - # Configurar el boot sector de la particion windows. - ogFixBootSector $1 $2 - # Configura el gestor de arranque de windows xp vista seven + # Descomentar la siguiente línea para cambiar usuario de inicio. + #ogSetWinlogonUser $1 $2 " " + # Configurar el boot sector de la partición Windows. + ogFixBootSector $1 $2 + # Configurar el gestor de arranque de Windows XP/Vista/7. ogWindowsBootParameters $1 $2 - # Registra en windows que la particion indicada es su nueva unidad c:\ + # Registrar en Windows que la partición indicada es su nueva unidad C:\ ogWindowsRegisterPartition $1 $2 C $1 $2 +fi + +if [ "$(ogGetOsType $1 $2)" = "Linux" ]; then + ogGrubInstallPartition $1 $2 fi
\ No newline at end of file diff --git a/client/shared/scripts/createImage b/client/shared/scripts/createImage index 3643d1af..3bba9d36 100755 --- a/client/shared/scripts/createImage +++ b/client/shared/scripts/createImage @@ -23,10 +23,12 @@ #@version 1.0 - control de errores para el ogAdmServer #@author #@date 2011-04-10 -#@version 1.0.1 - Fin de control de errores para el ogAdmServer -#@author +#@version 1.0.1 - Control de espacio requerido +#@author Antonio J.Doblas Viso #@date 2011-05-10 - + #@version 1.0.2 - Separacion de log +#@author Antonio J.Doblas Viso +#@date 2011-08-4 #*/ ## # Test 1. crear una imagen en un REPO sin espacio libre. @@ -36,6 +38,12 @@ # test 5. intentar crear una imagen, en la que no se puede reducir el FS. TIME1=$SECONDS +OGLOGSESSION="/tmp/session.log" +OGLOGCOMMAND="/tmp/command.log" + + + + PROG="$(basename $0)" if [ $# -ne 4 ]; then ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG ndisco nparticion REPO|CACHE imagen" @@ -47,29 +55,38 @@ IMGPROG="partclone" IMGCOMP="lzop" IMGEXT="img" +echo "[1] Iniciando $0 $*" | tee -a $OGLOGSESSION $OGLOGFILE + + # Si el repositorio es CACHE comprobamos que exista if [ "$3" == "CACHE" -o "$3" == "cache" ]; then ! ogFindCache >/dev/null && exit $(ogRaiseError $OG_ERR_NOTCACHE "CACHE "; echo $?) fi +echo " " > $OGLOGCOMMAND + # Obtener información de los parámetros de entrada. PART=$(ogDiskToDev "$1" "$2" 2>/dev/null) || exit $(ogRaiseError $OG_ERR_PARTITION "$1 $2"; echo $?) +echo " " > $OGLOGCOMMAND + #Comprobamos acceso de escritura. DIRTEMP=$(date +%Y%m%d-%H%M%S) ogMakeDir $3 /$4$DIRTEMP 2>/dev/null || exit $(ogRaiseError $OG_ERR_NOTWRITE "$3"; echo $?) && ogDeleteTree $3 /$4$DIRTEMP +echo " " > $OGLOGCOMMAND + IMGDIR=$(ogGetParentPath "$3" "/$4") # Si no existe, crear subdirectorio de la imagen. if [ $? != 0 ]; then - echo "[5] Crear subdirectorio de la imagen \"$3 $(dirname "$4")." + echo "[5] Crear subdirectorio de la imagen \"$3 $(dirname "$4")." | tee -a $OGLOGSESSION $OGLOGFILE ogMakeDir "$3" $(dirname "/$4") || exit $(ogRaiseError $OG_ERR_NOTWRITE "$3 /$4"; echo $?) IMGDIR=$(ogGetParentPath "$3" "/$4") || exit $(ogRaiseError $OG_ERR_NOTWRITE "$3 /$4"; echo $?) fi IMGFILE=$IMGDIR/$(basename "/$4").$IMGEXT # Renombrar el fichero de imagen si ya existe. if [ -f "$IMGFILE" ]; then - echo "[10] Renombrar \"$IMGFILE\" por \"$IMGFILE.ant\"." + echo "[10] Renombrar \"$IMGFILE\" por \"$IMGFILE.ant\"." | tee -a $OGLOGSESSION $OGLOGFILE mv "$IMGFILE" "$IMGFILE.ant" mv "$IMGFILE.torrent" "$IMGFILE.torrent.ant" 2>/dev/null fi @@ -90,9 +107,11 @@ else exit $? fi +echo " " > $OGLOGCOMMAND + # Mostrar información. -echo "[15] $PROG: Origen=$PART, Destino=$IMGFILE" -echo "[16] $PROG: TamañoRequerido=$SIZEREQUIRED EspacioDisponible=$SIZEFREE" +echo "[15] $PROG: Origen=$PART, Destino=$IMGFILE" | tee -a $OGLOGSESSION $OGLOGFILE +echo "[16] $PROG: TamañoRequerido=$SIZEREQUIRED EspacioDisponible=$SIZEFREE" | tee -a $OGLOGSESSION $OGLOGFILE [ "$SIZEREQUIRED" -gt "$SIZEFREE" ] && exit $(ogRaiseError $OG_ERR_CACHESIZE "$3" || echo $?) @@ -100,21 +119,25 @@ echo "[16] $PROG: TamañoRequerido=$SIZEREQUIRED EspacioDisponible=$SIZEFREE" # TODO: que hacer si la cache no tiene espacio libre. # Comprobar consistencia del sistema de archivos. -echo "[20] Comprobar sistema de archivos." +echo "[20] Comprobar sistema de archivos." | tee -a $OGLOGSESSION $OGLOGFILE ogUnmount $1 $2 ogCheckFs $1 $2 || exit $(ogRaiseError $OG_ERR_PARTITION "ogCheckFs $1 $2" && echo $?) -echo "[30]: Reducir sistema de archivos." +echo " " > $OGLOGCOMMAND + +echo "[30]: Reducir sistema de archivos." | tee -a $OGLOGSESSION $OGLOGFILE ogReduceFs $1 $2 || exit $(ogRaiseError $OG_ERR_REDUCEFS "$1 $2"; echo $?) +echo " " > $OGLOGCOMMAND + # Crear la imagen. -echo "[40] Crear imagen con: ogCreateImage $1 $2 $3 $4 $IMGPROG $IMGCOMP" +echo "[40] Crear imagen con: ogCreateImage $1 $2 $3 $4 $IMGPROG $IMGCOMP" | tee -a $OGLOGSESSION $OGLOGFILE ogCreateImage $1 "$2" $3 $4 "$IMGPROG" "$IMGCOMP" || exit $(ogRaiseError $OG_ERR_IMAGE "ogCreteImage"; echo $?) -echo "[90] Extender sistema de archivos." +echo "[90] Extender sistema de archivos." | tee -a $OGLOGSESSION $OGLOGFILE ogExtendFs $1 $2 || exit $(ogRaiseError $OG_ERR_EXTENDFS "$1 $2"; echo $?) TIME=$[SECONDS-TIME1] -echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" +echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" | tee -a $OGLOGSESSION $OGLOGFILE diff --git a/client/shared/scripts/deployImage b/client/shared/scripts/deployImage index 16a403cc..e5a2bec3 100755 --- a/client/shared/scripts/deployImage +++ b/client/shared/scripts/deployImage @@ -1,6 +1,31 @@ #!/bin/bash +#/** +# deployImage +#@brief Actualiza la cache del cliente con una imagen, y la restaura en la partición. +#@param 1 +#@param ejemplo: +#@return +#@exception OG_ERR_FORMAT formato incorrecto. +#@note +#@todo: +#@version 0.9.1 - integracion EAC +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2008/03/17 +#@version 0.9.2 - integracion OpenGnsys +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/07/27 +#@version 1.0.2 - Separacion de log +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/08/04 +#*/ ## + TIME1=$SECONDS + +OGLOGSESSION="/tmp/session.log" +OGLOGCOMMAND="/tmp/command.log" + + PROG="$(basename $0)" if [ $# -lt 4 ]; then ogRaiseError $OG_ERR_FORMAT "$MSG_FORMAT: $PROG REPO imagen ndisco nparticion [ UNICAST|MULTICAST|TORRENT ] [opciones protocolo]" @@ -8,20 +33,20 @@ if [ $# -lt 4 ]; then fi #controlar param1 REPO -echo "Realizando un updateCache REPO $2.img $5 $6" -updateCache REPO $2.img $5 $6 +echo "[1] Realizando un updateCache REPO $2.img $5 $6" | tee -a $OGLOGSESSION $OGLOGFILE +updateCache REPO $2.img $5 $6 | tee -a $OGLOGCOMMAND RETVAL=$? if [ "$RETVAL" != "0" ] then - echo "fin del updateCache REPO $2.img $5 $6 con error $RETVAL" + echo "[49] Fin del updateCache REPO $2.img $5 $6 con error $RETVAL" | tee -a $OGLOGSESSION $OGLOGFILE # RC=15 No hay cache # RC=16 no hay espacio sufiente exit $RETVAL else - echo "iniciando un ogRestore CACHE desde deployImage" - ogRestoreImage CACHE /$2 $3 $4 + echo "[50] Iniciando un ogRestore CACHE desde deployImage" | tee -a $OGLOGSESSION $OGLOGFILE + ogRestoreImage CACHE /$2 $3 $4 &>> $OGLOGCOMMAND RETVAL=$? - [ "$RETVAL" == "0" ] && configureOs $3 $4 + [ "$RETVAL" == "0" ] && configureOs $3 $4 | tee -a $OGLOGCOMMAND exit $RETVAL fi
\ No newline at end of file diff --git a/client/shared/scripts/listPartitions b/client/shared/scripts/listPartitions new file mode 100755 index 00000000..6f9c318f --- /dev/null +++ b/client/shared/scripts/listPartitions @@ -0,0 +1,3 @@ +#!/bin/bash +ogListPartitions "$@" | sed 's/\(EMPTY:0 \)*$//' + diff --git a/client/shared/scripts/restoreImage b/client/shared/scripts/restoreImage index a01f1a49..f08c0415 100755 --- a/client/shared/scripts/restoreImage +++ b/client/shared/scripts/restoreImage @@ -76,14 +76,10 @@ ogRestoreImage "$@" || exit $? # Restaurar tamaño. echo "[80] Extender sistema de archivos." ogExtendFs $3 $4 -# Cambiar nombre en sistemas Windows y quitar usuario de acceso por defecto. -if [ "$(ogGetOsType $3 $4)" = "Windows" ]; then - HOST=$(ogGetHostname) - HOST=${HOST:-"pc"} - echo "[90] Cambiar nombre Windows a \"$HOST\" y usuario de acceso." - ogSetWindowsName $3 $4 "$HOST" - #ogSetWinlogonUser $3 $4 " " # Descomentar para cambiar usuario de inicio. -fi +# Llamar al script de post-configuración del sistema operativo. +echo "[90] Post-configuracion de aranque del sistema." +configureOs $3 $4 + TIME=$[SECONDS-TIME1] echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" diff --git a/client/shared/scripts/runAplicationX.sh b/client/shared/scripts/runAplicationX.sh new file mode 100755 index 00000000..85f96814 --- /dev/null +++ b/client/shared/scripts/runAplicationX.sh @@ -0,0 +1,8 @@ +#/bin/bash +/usr/X11R6/bin/Xvesa :0 -ac -shadow -screen 1024x768x24 -br -mouse /dev/input/mice & +/bin/sleep 0.1 +export DISPLAY=:0 +#/usr/bin/lxde-logout +#/usr/bin/openbox +/usr/bin/roxterm +#/usr/sbin/gparted diff --git a/client/shared/scripts/runhttplog.sh b/client/shared/scripts/runhttplog.sh new file mode 100755 index 00000000..04d3e530 --- /dev/null +++ b/client/shared/scripts/runhttplog.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +echo "export OGLOGCOMMAND=/tmp/command.log" >> /etc/profile.d/loadenviron.sh +echo "export OGLOGSESSION=/tmp/session.log" >> /etc/profile.d/loadenviron.sh + export OGLOGCOMMAND=/tmp/command.log + export OGLOGSESSION=/tmp/session.log + +#httd-log-status +cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.back +cp /opt/opengnsys/lib/httpd/lighttpd.conf /etc/lighttpd/ +cp /etc/lighttpd/conf-enabled/10-cgi.conf /etc/lighttpd/conf-enabled/10-cgi.conf.back +cp /opt/opengnsys/lib/httpd/10-cgi.conf /etc/lighttpd/conf-enabled/ +/etc/init.d/lighttpd start +chmod 755 /opt +cp /opt/opengnsys/lib/httpd/* /usr/lib/cgi-bin +#TODO: +dstat -dn 10 > /tmp/bandwidth & +#Se pasan al loadenviro para su uso en ssh +#export OGLOGSESSION=/tmp/session.log +#export OGLOGCOMMAND=/tmp/command.log +touch $OGLOGCOMMAND +touch $OGLOGSESSION +touch ${OGLOGCOMMAND}.tmp +chmod 777 $OGLOGCOMMAND +chmod 777 $OGLOGSESSION +chmod 777 ${OGLOGCOMMAND}.tmp +touch /tmp/menu.tmp +chmod 777 /tmp/menu.tmp +echo "WAITING" >> $OGLOGSESSION +# http-log-status
\ No newline at end of file diff --git a/client/shared/scripts/updateBootCache b/client/shared/scripts/updateBootCache index af2267a2..f3edae7c 100755 --- a/client/shared/scripts/updateBootCache +++ b/client/shared/scripts/updateBootCache @@ -1,7 +1,54 @@ #!/bin/bash -OGBTFTP="/opt/og2fs/tftpboot/ogclient/" + +#/** +# updateBootCache +#@brief acelerador arranque pxe. incorpora a la cache el initrd y el kernel. +#@param 1 +#@param ejemplo: +#@return +#@exception OG_ERR_FORMAT formato incorrecto. +#@note +#@todo: +#@version 1.0.1 - requiere el gestor de arranque grub2dos +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/07/27 +#*/ ## + + + +OGBTFTP="/opt/oglive/tftpboot/ogclient" ogMountCache || exit 1 -echo $OGCAC + [ -d $OGCAC/boot ] || mkdir -p $OGCAC/boot -[ -f ${OGCAC}/boot/ogvmlinuz ] || cp ${OGBTFTP}ogvmlinuz ${OGCAC}/boot/ogvmlinuz -[ -f ${OGCAC}/boot/oginitrd.img ] || cp ${OGBTFTP}oginitrd.img ${OGCAC}/boot/oginitrd.img
\ No newline at end of file + + # comparamos los del server + SERVERVMLINUZ=`cat ${OGBTFTP}/ogvmlinuz.sum` + SERVERINITRD=`cat ${OGBTFTP}/oginitrd.img.sum` + + #comparamos los de la cache + CACHEVMLINUZ=`cat ${OGCAC}/boot/ogvmlinuz.sum` + CACHEINITRD=`cat ${OGCAC}/cache/boot/oginitrd.img.sum` + + echo "MD5 on SERVER: $SERVERVMLINUZ $SERVERINITRD" + echo "MD5 on CACHE: $CACHEVMLINUZ $CACHEINITRD" + + + if [ "$CACHEVMLINUZ" != "$SERVERVMLINUZ" ] + then + echo "ogvmlinuz updating" + cp ${OGBTFTP}ogvmlinuz ${OGCAC}/boot/ogvmlinuz + cp ${OGBTFTP}ogvmlinuz.sum ${OGCAC}/boot/ogvmlinuz.sum + DOREBOOT=true + fi + if [ "$CACHEINITRD" != "$SERVERINITRD" ] + then + echo "oginitrd updating" + cp ${OGBTFTP}oginitrd.img ${OGCAC}/boot/oginitrd.img + cp ${OGBTFTP}oginitrd.img.sum ${OGCAC}/boot/oginitrd.img.sum + DOREBOOT=true + fi + +echo $DOREBOOT +# [ "$DOREBOOT" == "true" ] && busybox reboot -f + + diff --git a/client/shared/scripts/updateCache b/client/shared/scripts/updateCache index bebb1153..2b7f2c3f 100755 --- a/client/shared/scripts/updateCache +++ b/client/shared/scripts/updateCache @@ -1,17 +1,29 @@ #!/bin/bash -# Scirpt para la actualizacion de datos en la cache. -# Versión: 0.9.1, 2008/03/17, - integracion eac -# Versión: 0.9.2, 2010/07/27, - integracion opengnsys - - - -#1 REPO -#2 nombre del fichero con su extension, tipo /imagen1.img o /ubuntu.iso -#3 Protocolo TORRENT | MULTICAST | UNICAST -#4 opciones protocolo -#5 opciones de update cache +#/** +# updateCache +#@brief Actualiza la cache del cliente con imagen o fichero iso. +#@param 1 REPO Origen del fichero. -accesible por nfs-samba- +#@param 2 str_fichero nombre del fichero a actualizar. +#@param 3 str_protoco. TORRENT | MULTICAST | UNICAST. +#@param 4 str_opcionesprotocolo +#@param 4 str_opcionesupdatecache +#@ejemplo: oneRemoteFromMaster 172.17.36.11 CACHE /imagen1 9000:full-duplex:239.194.17.36:70M:50:100 1 1 partclone lzop +#@return +#@exception OG_ERR_FORMAT formato incorrecto. +#@note +#@todo: +#@version 0.9.1 - integracion EAC +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2008/03/17 +#@version 0.9.2 - integracion OpenGnsys +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2010/07/27 +#@version 1.0.1 - Control de espacio requerido +#@author Antonio J.Doblas Viso +#@date 2011-05-10 +#*/ ## PROG="$(basename $0)" if [ $# -lt 3 ]; then @@ -19,9 +31,9 @@ if [ $# -lt 3 ]; then exit $? fi -REPOSITORIO=$1 -PROTOCOLO=$3 -OPTPROTOCOLO=$4 +REPOSITORIO="$1" +PROTOCOLO="$3" +OPTPROTOCOLO="$4" REPOIP=$(ogGetRepoIp) echo $REPOSITORIO $REPOIP $PROTOCOLO $OPTPROTOCOLO # Si el repositorio local CACHE no existe salimos. @@ -39,7 +51,7 @@ ogUpdateCacheIsNecesary $1 $2; RETVAL=$? CACHESIZEFREE=$(ogGetFreeSize `ogFindCache`) -FILESIZE=$(ls -sk $(ogGetPath $1 $2) | cut -f1 -d" ") +FILESIZE=$(ls -sk $(ogGetPath $REPOSITORIO "$2") | cut -f1 -d" ") if [ "$FILESIZE" -ge "$CACHESIZEFREE" ] then @@ -48,32 +60,35 @@ then exit $? fi -ogUpdateCacheIsNecesary $1 $2; RETVAL=$? +ogUpdateCacheIsNecesary $REPOSITORIO "$2"; RETVAL=$? # si RETVAL=0 => actualizamos si RETVAL=1 no actaulizasmo-exit 0 || si RETVAL>2 exit 1 [ "$RETVAL" == "1" ] && exit 0 [ "$RETVAL" -gt "1" ] && exit 1 -ogMountCache +ogMountCache >/dev/null ## Si no existe, crear subdirectorio para el fichero en la cache. -IMGDIR=$(ogGetParentPath "$1" "/$2") +IMGDIR=$(ogGetParentPath CACHE "/$2") if [ $? != 0 ]; then echo "[5] Crear subdirectorio del fichero \"$2 $(dirname "$2")." - ogMakeDir "CACHE" $(dirname "/$2") - IMGDIR=$(ogGetParentPath "$1" "/$2") || exit $? + ogMakeDir CACHE $(dirname "/$2") + IMGDIR=$(ogGetParentPath CACHE "/$2") || exit $? fi - - case "$PROTOCOLO" in torrent | TORRENT ) - echo "ogCopyFile $1 $2.torrent absolute $OGCAC$OGIMG" - ogCopyFile $1 $2.torrent $OGCAC$OGIMG + echo "ogCopyFile $1 $2.torrent absolute $OGCAC/$OGIMG" + # tiempos + timewait=$(expr $(printf '%d\n' 0x$(ogGetMacAddress | awk -F: '{print $5$6}')) \* 120 / 65535) + ogCopyFile $REPOSITORIO "$2.torrent" "$IMGDIR" #TODO: comprobar que el tracker definido en el fichero es correcto. #TODO comprobar que el fichero torrent está en cache - echo "ogTorrentStart CACHE $2.torrent $4" - ogTorrentStart CACHE $2.torrent $4 + # retardamos el inicio -aleatorio de 0 a 120 segundos- al tracker para gestionar mas de +-40 equipos + P2PWAIT=$[ ( $RANDOM % 120 ) + 1 ] + echo "Esperando $P2PWAIT segundos para iniciar ogTorrentStart CACHE $2.torrent $4" + sleep $P2PWAIT + ogTorrentStart CACHE "$2.torrent" $4 ;; multicast | MULTICAST ) echo "determinando puerto principal y auxiliar." @@ -86,7 +101,7 @@ case "$PROTOCOLO" in echo "comprobando puerto $PORTAUX en $REPOIP (sesion multicast en puerto $PORT) " if (nmap -n -sU -p $PORTAUX $REPOIP | grep open) then - ogMcastReceiverFile $PORT CACHE $2 + ogMcastReceiverFile $PORT CACHE "$2" else # TODO ticket 379 Realizar la petición basada en identificador de operacion echo "solicita la apertura: hose $REPOIP 2009 --out sh -c "echo -ne START_MULTICAST $2 $OPTPROTOCOLO"" @@ -95,7 +110,7 @@ case "$PROTOCOLO" in sleep 10 if (nmap -n -sU -p $PORTAUX $REPOIP | grep open) then - ogMcastReceiverFile $PORT CACHE $2 + ogMcastReceiverFile $PORT CACHE "$2" else echo "la peticion ha fallado: hose $REPOIP 2009 --out sh -c echo -ne START_MULTICAST $2 $OPTPROTOCOLO" exit 1 @@ -104,13 +119,14 @@ case "$PROTOCOLO" in ;; unicast | UNICAST ) echo "unicast" - ogCopyFile $1 $2 $OGCAC$OGIMG + ogCopyFile $REPOSITORIO "$2" "$IMGDIR" ;; esac -ogUpdateCacheIsNecesary $1 $2; RETVAL=$? +ogUpdateCacheIsNecesary $REPOSITORIO "$2"; RETVAL=$? # si RETVAL=0 => actualizamos si RETVAL=1 no actaulizasmo-exit 0 || si RETVAL>2 exit 1 [ "$RETVAL" == "0" ] && exit 1 [ "$RETVAL" == "1" ] && exit 0 -[ "$RETVAL" -gt "1" ] && exit 1
\ No newline at end of file +[ "$RETVAL" -gt "1" ] && exit 1 + |