summaryrefslogtreecommitdiffstats
path: root/installer/opengnsys_update.sh
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2011-04-11 14:52:38 +0000
committerramon <ramongomez@us.es>2011-04-11 14:52:38 +0000
commit295b4abd4dd67c98cdda47f87d2d4c8d900dfa55 (patch)
treecdcac9f12ebee215350f02541f0fbff4bc59b8a2 /installer/opengnsys_update.sh
parent034f607ded4bf4d1cf22593762db52d52ad14705 (diff)
Versión 1.0: Mejoras en el script de actualización:
* Actualización de la estructura de la base de datos. * Actualizar correctamente los ficheros del servidor. * Secuencia correcta del proceso de actualización. Modificado #361, #359. git-svn-id: https://opengnsys.es/svn/branches/version1.0@1809 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'installer/opengnsys_update.sh')
-rwxr-xr-xinstaller/opengnsys_update.sh85
1 files changed, 73 insertions, 12 deletions
diff --git a/installer/opengnsys_update.sh b/installer/opengnsys_update.sh
index 5640be8c..7e4e72bd 100755
--- a/installer/opengnsys_update.sh
+++ b/installer/opengnsys_update.sh
@@ -12,6 +12,15 @@
#*/
+#### AVISO: Editar configuración de acceso por defecto a la Base de Datos.
+OPENGNSYS_DATABASE="ogAdmBD" # Nombre de la base datos
+OPENGNSYS_DBUSER="usuog" # Usuario de acceso
+OPENGNSYS_DBPASSWORD="passusuog" # Clave del usuario
+
+#### AVISO: NO Editar variables de acceso desde el cliente
+OPENGNSYS_CLIENTUSER="opengnsys" # Usuario Samba
+
+
# Sólo ejecutable por usuario root
if [ "$(whoami)" != 'root' ]
then
@@ -41,9 +50,10 @@ LOG_FILE=/tmp/opengnsys_update.log
#####################################################################
####### Algunas funciones útiles de propósito general:
#####################################################################
+
function getDateTime()
{
- echo `date +%Y%m%d-%H%M%S`
+ date "+%Y%m%d-%H%M%S"
}
# Escribe a fichero y muestra por pantalla
@@ -112,6 +122,46 @@ function restoreFile()
#####################################################################
+####### Funciones de acceso a base de datos
+#####################################################################
+
+# Actualizar la base datos
+function importSqlFile()
+{
+ if [ $# -ne 4 ]; then
+ errorAndLog "${FNCNAME}(): invalid number of parameters"
+ exit 1
+ fi
+
+ local dbuser="$1"
+ local dbpassword="$2"
+ local database="$3"
+ local sqlfile="$4"
+ local tmpfile=$(mktemp)
+ local status
+
+ if [ ! -r $sqlfile ]; then
+ errorAndLog "${FUNCNAME}(): Unable to read $sqlfile!!"
+ return 1
+ fi
+
+ echoAndLog "${FUNCNAME}(): importing SQL file to ${database}..."
+ chmod 600 $tmpfile
+ sed -e "s/SERVERIP/$SERVERIP/g" -e "s/DBUSER/$OPENGNSYS_DB_USER/g" \
+ -e "s/DBPASSWORD/$OPENGNSYS_DB_PASSWD/g" $sqlfile > $tmpfile
+ mysql -u$dbuser -p"$dbpassword" --default-character-set=utf8 "$database" < $tmpfile
+ status=$?
+ rm -f $tmpfile
+ if [ $status -ne 0 ]; then
+ errorAndLog "${FUNCNAME}(): error importing $sqlfile in database $database"
+ return 1
+ fi
+ echoAndLog "${FUNCNAME}(): file imported to database $database"
+ return 0
+}
+
+
+#####################################################################
####### Funciones de instalación de paquetes
#####################################################################
@@ -207,7 +257,7 @@ function updateServicesStart(){
}
# Actualizar cliente OpenGnSys
-function openGnsysCopyClientFiles()
+function updateClientFiles()
{
local hayErrores=0
@@ -272,7 +322,7 @@ function updateInterfaceAdm ()
exit 1
fi
chmod -R +x $INSTALL_TARGET/client/interfaceAdm
- chown root:root $INSTALL_TARGET/client/interfaceAdm/CambiarAcceso
+ chown :$OPENGNSYS_CLIENTUSER $INSTALL_TARGET/client/interfaceAdm/CambiarAcceso
chmod 700 $INSTALL_TARGET/client/interfaceAdm/CambiarAcceso
echoAndLog "${FUNCNAME}(): Admin interface updated successfully."
}
@@ -342,7 +392,7 @@ function updateServerFiles () {
pushd $WORKDIR/opengnsys >/dev/null
local i
for (( i = 0; i < ${#SOURCES[@]}; i++ )); do
- rsync --exclude .svn -irplt "${SOURCES[$i]}" "${INSTALL_TARGET}/${TARGETS[$i]}"
+ rsync --exclude .svn -irplt "${SOURCES[$i]}" $(dirname "${INSTALL_TARGET}/${TARGETS[$i]}")
done
popd >/dev/null
echoAndLog "${FUNCNAME}(): updating cron files"
@@ -450,11 +500,11 @@ function updateClient()
tar xzvf $TMPFILE -C $INSTALL_TARGET/tftpboot
rm -f $TMPFILE
# Usar la versión más reciente del Kernel y del Initrd para el cliente.
- ln $(ls $INSTALL_TARGET/tftpboot/ogclient/vmlinuz-*|tail -1) $INSTALL_TARGET/tftpboot/ogclient/ogvmlinuz
- ln $(ls $INSTALL_TARGET/tftpboot/ogclient/initrd.img-*|tail -1) $INSTALL_TARGET/tftpboot/ogclient/oginitrd.img
+ ln -f $(ls $INSTALL_TARGET/tftpboot/ogclient/vmlinuz-*|tail -1) $INSTALL_TARGET/tftpboot/ogclient/ogvmlinuz
+ ln -f $(ls $INSTALL_TARGET/tftpboot/ogclient/initrd.img-*|tail -1) $INSTALL_TARGET/tftpboot/ogclient/oginitrd.img
# Establecer los permisos.
chmod -R 755 $INSTALL_TARGET/tftpboot/ogclient
- chown -R :$OPENGNSYS_CLIENT_USER $INSTALL_TARGET/tftpboot/ogclient
+ chown -R :$OPENGNSYS_CLIENTUSER $INSTALL_TARGET/tftpboot/ogclient
echoAndLog "${FUNCNAME}(): Client update successfully"
}
@@ -500,17 +550,29 @@ else
ln -fs "$(dirname $PROGRAMDIR)" opengnsys
fi
-# Copiando ficheros complementarios del servidor
+# Si existe fichero de actualización de la base de datos; aplicar cambios.
+INSTVERSION=$(awk '{print $2}' $INSTALL_TARGET/doc/VERSION.txt)
+REPOVERSION=$(awk '{print $2}' $WORKDIR/opengnsys/doc/VERSION.txt)
+OPENGNSYS_DBUPDATEFILE="$WORKDIR/opengnsys/admin/Database/$OPENGNSYS_DATABASE-$INSTVERSION-$REPOVERSION.sql"
+if [ -f $OPENGNSYS_DBUPDATEFILE ]; then
+ echoAndLog "Updating tables from version $INSTVERSION to $REPOVERSION"
+ importSqlFile $OPENGNSYS_DBUSER $OPENGNSYS_DBPASSWORD $OPENGNSYS_DATABASE $OPENGNSYS_DBUPDATEFILE
+else
+ echoAndLog "Database unchanged."
+fi
+
+# Actualizar ficheros complementarios del servidor
updateServerFiles
if [ $? -ne 0 ]; then
errorAndLog "Error updating OpenGnSys Server files"
exit 1
fi
-# Actualizando cliente
-openGnsysCopyClientFiles
+# Actualizar ficheros del cliente
+updateClientFiles
+updateInterfaceAdm
-# Copiando paqinas web
+# Actualizar páqinas web
updateWebFiles
if [ $? -ne 0 ]; then
errorAndLog "Error updating OpenGnSys Web Admin files"
@@ -528,7 +590,6 @@ if [ $? -ne 0 ]; then
errorAndLog "Error updating clients"
exit 1
fi
-updateInterfaceAdm
# Actualizamos el fichero que arranca los servicios de OpenGnSys
updateServicesStart