diff options
author | ramon <ramongomez@us.es> | 2015-12-16 09:47:13 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2015-12-16 09:47:13 +0000 |
commit | 99076de7e1b3dcb0b0ef5a91bb47e3084fde86e1 (patch) | |
tree | d2f669dc2b8e306d1bb047c29f2ec65fdc1e2932 /server/bin | |
parent | 5854ddbeb10c16067c4f6dad04c38c931fd9a150 (diff) |
#729: Script {{{installoglive}}} comprueba la versión de Rsync del servidor y del SquashFs del cliente y, si es necesario, renombra ejecutable de Rsync exportado al cliente para compatibilizar las versiones del protocolo.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@4757 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'server/bin')
-rwxr-xr-x | server/bin/installoglive | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/server/bin/installoglive b/server/bin/installoglive index 7d4b1455..44979878 100755 --- a/server/bin/installoglive +++ b/server/bin/installoglive @@ -7,7 +7,10 @@ # Fecha: 2015-01-26 # Versión: 1.1 - Posibilidad para instalar fichero ogLive local. # Autor: Ramón M. Gómez - ETSII Univ. Sevilla -# Fecha: 2016-11-06 +# Fecha: 2015-11-06 +# Versión: 1.1.0a - Adaptar la versión de Rsync de cliente y servidor. +# Autor: Ramón M. Gómez - ETSII Univ. Sevilla +# Fecha: 2015-12-16 # Control de acceso. @@ -20,12 +23,15 @@ fi # Constantes. DOWNLOADURL="http://opengnsys.es/downloads" OPENGNSYS=/opt/opengnsys -OGINITRD=$OPENGNSYS/tftpboot/ogclient/oginitrd.img -OGVMLINUZ=$OPENGNSYS/tftpboot/ogclient/ogvmlinuz +OGCLIENTDIR=/opt/opengnsys/tftpboot/ogclient +OGINITRD=$OGCLIENTDIR/oginitrd.img +OGVMLINUZ=$OGCLIENTDIR/ogvmlinuz +OGSQFS=$OGCLIENTDIR/ogclient.sqfs if [ -n "$1" ]; then # Si se recibe un parámetro, utilizar fichero ogLive local. TARGETFILE="$1" + OGLIVEFILE=$(basename $TARGETFILE) else # Sin parámetros, listar todos los ficheros ogLive descargables. OGLIVE=( $(wget $DOWNLOADURL -O - 2>/dev/null|grep ogLive.*iso) ) @@ -66,16 +72,16 @@ if [ -f $OGINITRD ]; then fi # Hacer copia de seguridad del ogLive actual. -rm -fr $OPENGNSYS/tftpboot/ogclient.old -mv -f $OPENGNSYS/tftpboot/ogclient $OPENGNSYS/tftpboot/ogclient.old +rm -fr ${OGCLIENTDIR}.old +mv -f $OGCLIENTDIR ${OGCLIENTDIR}.old # Montar la imagen ISO del ogclient, actualizar ficheros y desmontar. TMPDIR=/tmp/${OGLIVEFILE%.iso} mkdir -p $TMPDIR mount -o loop,ro $TARGETFILE $TMPDIR -cp -va $TMPDIR/ogclient $OPENGNSYS/tftpboot/ogclient +cp -va $TMPDIR/ogclient $OGCLIENTDIR +#rsync -irlt $TMPDIR/ogclient $OPENGNSYS/tftpboot umount $TMPDIR -rmdir $TMPDIR # Recuperar la clave de acceso a Samba o solicitar una nueva clave. if [ -n "$SAMBAPASS" ]; then @@ -85,10 +91,25 @@ else fi # Establecer los permisos. -find -L $OPENGNSYS/tftpboot/ogclient -type d -exec chmod 755 {} \; -find -L $OPENGNSYS/tftpboot/ogclient -type f -exec chmod 644 {} \; -chown -R :opengnsys $OPENGNSYS/tftpboot/ogclient +find -L $OGCLIENTDIR -type d -exec chmod 755 {} \; +find -L $OGCLIENTDIR -type f -exec chmod 644 {} \; +chown -R :opengnsys $OGCLIENTDIR # Ofrecer md5 del kernel y vmlinuz para ogupdateinitrd en cache -cp -av $OPENGNSYS/tftpboot/ogclient/{ogvmlinuz,oginitrd.img}* $OPENGNSYS/tftpboot +cp -av $OGCLIENTDIR/{ogvmlinuz,oginitrd.img}* $OPENGNSYS/tftpboot + +# Montar SquashFS para comprobar versión de Rsync. +mount -o loop,ro $OGCLIENTDIR/ogclient.sqfs $TMPDIR +# Si versión Rsync de servidor > cliente, enlazar a fichero compilado. +RSYNCSERV=$(rsync --version 2>/dev/null | awk '/protocol/ {print $6}') +RSYNCCLNT=$(chroot $TMPDIR /usr/bin/rsync --version 2>/dev/null | awk '/protocol/ {print $6}') +if [ -z "$RSYNCSERV" -o ${RSYNCSERV:-0} -gt ${RSYNCCLNT:-1} ]; then + [ -e $OPENGNSYS/client/bin/rsync-$RSYNCSERV ] && mv -f $OPENGNSYS/client/bin/rsync-$RSYNCSERV $OPENGNSYS/client/bin/rsync +else + # Si no, renombrar fichero compilado con nº de protocolo. + [ -e $OPENGNSYS/client/bin/rsync ] && mv -f $OPENGNSYS/client/bin/rsync $OPENGNSYS/client/bin/rsync-$($OPENGNSYS/client/bin/rsync --version 2>/dev/null | awk '/protocol/ {print $6}') +fi +# Desmontar SquashFS. +umount $TMPDIR +rmdir $TMPDIR |