summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoririna <irinagomez@us.es>2016-10-24 09:19:20 +0000
committeririna <irinagomez@us.es>2016-10-24 09:19:20 +0000
commitae41ee81f4cfd6245e18f4fb549f058bcff12ec2 (patch)
tree9f662ea0c53031861f72df7737e4b9193e899034
parent6d8673af658e7a0e7dfa3aac539e9b9f2456cbf5 (diff)
#755 Scripts para exportar e importar los datos de OpenGnsys
git-svn-id: https://opengnsys.es/svn/branches/version1.1@5042 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-xinstaller/opengnsys_export.sh106
-rwxr-xr-xinstaller/opengnsys_import.sh129
2 files changed, 235 insertions, 0 deletions
diff --git a/installer/opengnsys_export.sh b/installer/opengnsys_export.sh
new file mode 100755
index 00000000..580c7b78
--- /dev/null
+++ b/installer/opengnsys_export.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+# exportclient str_backupfile
+#@file exportclient
+#@brief Exporta los clientes de un archivo de backup: dhcp, pxe, páginas de inicio y configuración de la consola.
+#@param 1 str_backupfile fichero de backup (creado con exportclient)
+#@exception 1 Error de formato.
+#@exception 2 Sólo ejecutable por usuario root.
+#@exception 3 Sin acceso a la configuración de OpenGnsys.
+#@exception 4 No existe el directorio de backup.
+#@version 1.1.0 - Versión inicial.
+#@author Irina Gómez - ETSII Univ. Sevilla
+#@date 2016-10-18
+#*/ ##
+
+# Variables globales.
+PROG="$(basename $0)"
+
+TMPDIR=/tmp/opengnsys_export
+OPENGNSYS="/opt/opengnsys"
+MYSQLFILE="$TMPDIR/ogAdmBD.sql"
+MYSQLFILE2="$TMPDIR/usuarios.sql"
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ echo -e "$PROG: Exporta los datos de OpenGnsys desde un archivo de backup:" \
+ " dhcp, pxe, páginas de inicio y configuración de la consola.\n" \
+ " Formato: $PROG backup_file\n" \
+ " Ejemplo: $PROG backup.tgz"
+ exit
+fi
+
+# Comprobar parámetros.
+# Comprobamos número de parámetros
+if [ $# -ne 1 ]; then
+ echo "$PROG: ERROR: Error de formato: $PROG backup_file"
+ exit 1
+fi
+
+if [ "$USER" != "root" ]; then
+ echo "$PROG: Error: solo ejecutable por root." >&2
+ exit 2
+fi
+
+# Comprobamos acceso a ficheros de configuración
+if ! [ -r $OPENGNSYS/etc/ogAdmServer.cfg ]; then
+ echo "$PROG: ERROR: Sin acceso a la configuración de OpenGnSys." | tee -a $FILESAL
+ exit 3
+fi
+
+# Comprobamos que exista el directorio para el archivo de backup
+BACKUPDIR=$(realpath $(dirname $1) 2>/dev/null)
+! [ $? -eq 0 ] && echo "$PROG: Error: No existe el directorio para el archivo de backup" && exit 4
+BACKUPFILE="$BACKUPDIR/$(basename $1)"
+
+# Si existe el directorio auxiliar lo borramos
+[ -d $TMPDIR ] && rm -rf $TMPDIR
+
+# Creamos directorio auxiliar
+echo "Creamos directorio auxiliar."
+mkdir -p $TMPDIR
+chmod 700 $TMPDIR
+
+# Información de la versión
+echo "Información de la versión."
+cp $OPENGNSYS/doc/VERSION.txt $TMPDIR
+
+# DHCP
+echo "Copiamos Configuración del dhcp."
+for DHCPCFGDIR in /etc/dhcp /etc/dhcp3; do
+ [ -r $DHCPCFGDIR/dhcpd.conf ] && cp $DHCPCFGDIR/dhcpd.conf $TMPDIR
+done
+
+# TFTPBOOT
+echo "Guardamos los ficheros PXE de los clientes."
+cp -r $OPENGNSYS/tftpboot/menu.lst $TMPDIR
+
+# Configuración de los clientes
+echo "Guardamos la configuración de los clientes."
+cp $OPENGNSYS/client/etc/engine.cfg $TMPDIR
+
+# Páginas de inicio
+echo "Guardamos las páginas de inicio."
+cp -r $OPENGNSYS/www/menus $TMPDIR
+
+# MYSQL: Excluimos las tablas del servidor de administración (entornos) y repositorios
+echo "Exportamos la información de la base de datos."
+source $OPENGNSYS/etc/ogAdmServer.cfg
+mysqldump --opt -u $USUARIO -p$PASSWORD $CATALOG \
+ --ignore-table=${CATALOG}.entornos \
+ --ignore-table=${CATALOG}.repositorios \
+ --ignore-table=${CATALOG}.usuarios > $MYSQLFILE
+# Tabla usuario
+mysqldump --opt --no-create-info -u $USUARIO -p$PASSWORD $CATALOG usuarios > $MYSQLFILE2
+
+# IP SERVIDOR
+echo $ServidorAdm > $TMPDIR/IPSERVER.txt
+
+# Si existe ya archivo de blackup lo renombramos
+[ -r $BACKUPFILE ] && mv $BACKUPFILE $BACKUPFILE-$(date +%Y%M%d)
+
+# Empaquetamos los ficheros
+echo "Creamos un archivo comprimido con los datos: $BACKUPFILE."
+cd /tmp
+tar -czvf $BACKUPFILE ${TMPDIR##*/} &>/dev/null
+# Cambio permisos: sólo puede leerlo el root
+chmod 600 $BACKUPFILE
diff --git a/installer/opengnsys_import.sh b/installer/opengnsys_import.sh
new file mode 100755
index 00000000..69f44604
--- /dev/null
+++ b/installer/opengnsys_import.sh
@@ -0,0 +1,129 @@
+#!/bin/bash
+# importclient str_backupfile
+#@file importclient
+#@brief Importa los datos de OpenGnsys de un archivo de backup: dhcp, pxe, páginas de inicio y configuración de la consola.
+#@param 1 str_backupfile fichero de backup (creado con exportclient)
+#@exception 1 Error de formato
+#@exception 2 Sólo ejecutable por usuario root
+#@exception 3 Sin acceso al fichero de backup
+#@exception 4 Sin acceso a la configuración de OpenGnsys
+#@version 1.1.0 - Versión inicial.
+#@author Irina Gómez - ETSII Univ. Sevilla
+#@date 2016-10-18
+#*/ ##
+
+# Variables globales.
+PROG="$(basename $0)"
+
+BACKUPFILE=$1
+TMPDIR=/tmp/opengnsys_export
+OPENGNSYS="/opt/opengnsys"
+MYSQLFILE="$TMPDIR/ogAdmBD.sql"
+MYSQLFILE2="$TMPDIR/usuarios.sql"
+MYSQLBCK="$OPENGNSYS/doc/ogAdmBD.sql-$(date +%Y%M%d)"
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ echo -e "$PROG: Importa los datos de OpenGnsys desde un archivo de backup:" \
+ " dhcp, pxe, páginas de inicio y configuración de la consola.\n" \
+ " Formato: $PROG backup_file\n" \
+ " Ejemplo: $PROG backup.tgz"
+ exit
+fi
+
+# Comprobamos número de parámetros
+if [ $# -ne 1 ]; then
+ echo "$PROG: ERROR: Error de formato: $PROG backup_file"
+ exit 1
+fi
+
+# Comprobar parámetros.
+if [ "$USER" != "root" ]; then
+ echo "$PROG: Error: solo ejecutable por root." >&2
+ exit 2
+fi
+
+# Comprobamos acceso al fichero de backup
+if ! [ -r $BACKUPFILE ]; then
+ echo "$PROG: ERROR: Sin acceso al fichero de backup." | tee -a $FILESAL
+ exit 3
+fi
+
+# Comprobamos acceso a ficheros de configuración
+if ! [ -r $OPENGNSYS/etc/ogAdmServer.cfg ]; then
+ echo "$PROG: ERROR: Sin acceso a la configuración de OpenGnSys." | tee -a $FILESAL
+ exit 4
+fi
+
+# Si existe el directorio auxiliar lo borramos
+[ -d $TMPDIR ] && rm -rf $TMPDIR
+
+# Descomprimimos backup
+tar -xvzf $BACKUPFILE --directory /tmp &>/dev/null
+
+# Comprobamos si es la misma versión
+if ! diff $OPENGNSYS/doc/VERSION.txt $TMPDIR/VERSION.txt > /dev/null ; then
+ echo "La versión del servidor no coincide con la del backup."
+ cat $OPENGNSYS/doc/VERSION.txt $TMPDIR/VERSION.txt
+ read -p "¿Quiere continuar? (y/n): " ANSWER
+ if [ "${ANSWER^^}" != "Y" ]; then
+ echo "Operación cancelada."
+ exit 0
+ fi
+fi
+
+# Copiamos los archivo a su sitio correcto
+# DHCP
+echo " * Componemos la configuración del dhcp."
+for DHCPCFGDIR in /etc/dhcp /etc/dhcp3; do
+ if [ -r $DHCPCFGDIR/dhcpd.conf ]; then
+ # Tomamos las variables globales de la configuración actual y las declaraciones host del backup
+ # Inicio declaraciones host
+ OLDHOSTINI=$(grep -n -m1 -e "^[[:blank:]]*host" -e "^#[[:blank:]]*host" $TMPDIR/dhcpd.conf|cut -d: -f1)
+ let BEFOREHOST=$(grep -n -m1 -e "^[[:blank:]]*host" -e "^#[[:blank:]]*host" $DHCPCFGDIR/dhcpd.conf| cut -d: -f1)-1
+ # Copia de seguridad de la configuración anterior
+ cp $DHCPCFGDIR/dhcpd.conf $DHCPCFGDIR/dhcpd.conf-LAST
+ mv $DHCPCFGDIR/dhcpd.conf $DHCPCFGDIR/dhcpd.conf-$(date +%Y%m%d)
+ # Nuevo fichero
+ sed ${BEFOREHOST}q $DHCPCFGDIR/dhcpd.conf-LAST > $DHCPCFGDIR/dhcpd.conf
+ sed -n -e "$OLDHOSTINI,\$p" $TMPDIR/dhcpd.conf >> $DHCPCFGDIR/dhcpd.conf
+ break
+ fi
+done
+
+# TFTP
+echo " * Guardamos los ficheros PXE de los clientes."
+mv $OPENGNSYS/tftpboot/menu.lst $OPENGNSYS/tftpboot/menu.lst-$(date +%Y%m%d)
+cp -r $TMPDIR/menu.lst $OPENGNSYS/tftpboot
+
+# Configuración de los clientes
+echo " * Guardamos la configuración de los clientes."
+mv $OPENGNSYS/client/etc/engine.cfg $OPENGNSYS/client/etc/engine.cfg-$(date +%Y%m%d)
+cp $TMPDIR/engine.cfg $OPENGNSYS/client/etc/engine.cfg
+
+# Páginas de inicio
+echo " * Guardamos las páginas de inicio."
+mv $OPENGNSYS/www/menus $OPENGNSYS/www/menus-$(date +%Y%m%d)
+cp -r $TMPDIR/menus $OPENGNSYS/www
+
+# MYSQL
+echo " * Importamos informacion mysql."
+source $OPENGNSYS/etc/ogAdmServer.cfg
+# Copia de seguridad del estado de la base de datos
+mysqldump --opt -u $USUARIO -p$PASSWORD $CATALOG > $MYSQLBCK
+# Importamos los datos nuevos
+mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" < $MYSQLFILE &>/dev/null
+[ $? -ne 0 ] && echo "ERROR: Error al importar la información de la base de datos."
+# Importamos datos tabla usuario, ignoramos los repetidos
+sed -i -e s/IGNORE//g -e s/INSERT/"\nALTER TABLE usuarios ADD UNIQUE (usuario);\n\nINSERT IGNORE"/g $MYSQLFILE2
+mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" < $MYSQLFILE2 &>/dev/null
+[ $? -ne 0 ] && echo "ERROR: Error al importar la información de los usuarios de la consola"
+
+echo -e "Se ha terminado de importar los datos del backup. \n\nSe han realizado copias de seguridad de los archivos antiguos:"
+echo " - $DHCPCFGDIR/dhcpd.conf-$(date +%Y%m%d)"
+echo " - $OPENGNSYS/tftpboot/menu.lst-$(date +%Y%m%d)"
+echo " - $OPENGNSYS/client/etc/engine.cfg-$(date +%Y%m%d)"
+echo " - $OPENGNSYS/www/menus-$(date +%Y%m%d)"
+echo -e " - $MYSQLBCK \n"
+
+echo "Hay que revisar la configuración del dhcp. En la consola es necesario configurar los valores de las ips de repositorios, servidores ntp, etc y lanzar el \"netBoot Avanzado\" a todas las aulas"