source: installer/opengnsys_import.sh @ dee9fac

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since dee9fac was 749ae5f, checked in by ramon <ramongomez@…>, 8 years ago

#755: Usar fichero temporal con datos de conexión a MySQL para no incluir datos sensibles en la ejecución de comandos.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@5059 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 5.3 KB
Line 
1#!/bin/bash
2#         importclient str_backupfile
3#@file    importclient
4#@brief   Importa los datos de OpenGnsys de un archivo de backup: dhcp, pxe, páginas de inicio y configuración de la consola.
5#@param 1 str_backupfile fichero de backup (creado con exportclient)
6#@exception 1 Error de formato
7#@exception 2 Sólo ejecutable por usuario root
8#@exception 3 Sin acceso al fichero de backup
9#@exception 4 Sin acceso a la configuración de OpenGnsys
10#@version 1.1.0 - Versión inicial.
11#@author  Irina Gómez - ETSII Univ. Sevilla
12#@date    2016-10-18
13#*/ ##
14
15# Variables globales.
16PROG="$(basename $0)"
17
18BACKUPFILE=$1
19TMPDIR=/tmp/opengnsys_export
20OPENGNSYS="/opt/opengnsys"
21MYSQLFILE="$TMPDIR/ogAdmBD.sql"
22MYSQLFILE2="$TMPDIR/usuarios.sql"
23MYSQLBCK="$OPENGNSYS/doc/ogAdmBD.sql-$(date +%Y%M%d)"
24
25# Si se solicita, mostrar ayuda.
26if [ "$*" == "help" ]; then
27    echo -e "$PROG: Importa los datos de OpenGnsys desde un archivo de backup:" \
28           " dhcp, pxe, páginas de inicio y configuración de la consola.\n" \
29           "    Formato: $PROG backup_file\n" \
30           "    Ejemplo: $PROG backup.tgz"
31    exit
32fi
33
34# Comprobamos número de parámetros
35if [ $# -ne 1 ]; then
36    echo "$PROG: ERROR: Error de formato: $PROG backup_file"
37    exit 1
38fi
39
40# Comprobar parámetros.
41if [ "$USER" != "root" ]; then
42        echo "$PROG: Error: solo ejecutable por root." >&2
43        exit 2
44fi
45
46# Comprobamos acceso al fichero de backup
47if ! [ -r $BACKUPFILE ]; then
48    echo "$PROG: ERROR: Sin acceso al fichero de backup." | tee -a $FILESAL
49    exit 3
50fi
51
52# Comprobamos  acceso a ficheros de configuración
53if ! [ -r $OPENGNSYS/etc/ogAdmServer.cfg ]; then
54    echo "$PROG: ERROR: Sin acceso a la configuración de OpenGnSys." | tee -a $FILESAL
55    exit 4
56fi
57
58# Si existe el directorio auxiliar lo borramos
59[ -d $TMPDIR ] && rm -rf $TMPDIR
60
61# Descomprimimos backup
62tar -xvzf $BACKUPFILE --directory /tmp &>/dev/null
63
64# Comprobamos si es la misma versión
65if ! diff $OPENGNSYS/doc/VERSION.txt $TMPDIR/VERSION.txt > /dev/null ; then
66    echo "La versión del servidor no coincide con la del backup."
67    cat $OPENGNSYS/doc/VERSION.txt $TMPDIR/VERSION.txt
68    read -p "¿Quiere continuar? (y/n): " ANSWER
69    if [ "${ANSWER^^}" != "Y" ]; then
70        echo "Operación cancelada."
71        exit 0
72    fi
73fi
74
75# Copiamos los archivo a su sitio correcto
76# DHCP
77echo "   * Componemos la configuración del dhcp."
78for DHCPCFGDIR in /etc/dhcp /etc/dhcp3; do
79    if [ -r $DHCPCFGDIR/dhcpd.conf ]; then
80        # Tomamos las variables globales de la configuración actual y las declaraciones host del backup
81        # Inicio declaraciones host
82        OLDHOSTINI=$(grep -n -m1 -e "^[[:blank:]]*host" -e "^#[[:blank:]]*host" $TMPDIR/dhcpd.conf|cut -d: -f1)
83        let BEFOREHOST=$(grep -n -m1 -e "^[[:blank:]]*host" -e "^#[[:blank:]]*host" $DHCPCFGDIR/dhcpd.conf| cut -d: -f1)-1
84        # Copia de seguridad de la configuración anterior
85        cp $DHCPCFGDIR/dhcpd.conf $DHCPCFGDIR/dhcpd.conf-LAST
86        mv $DHCPCFGDIR/dhcpd.conf $DHCPCFGDIR/dhcpd.conf-$(date +%Y%m%d)
87        # Nuevo fichero
88        sed ${BEFOREHOST}q $DHCPCFGDIR/dhcpd.conf-LAST > $DHCPCFGDIR/dhcpd.conf
89        sed -n -e "$OLDHOSTINI,\$p" $TMPDIR/dhcpd.conf >> $DHCPCFGDIR/dhcpd.conf
90        break
91    fi
92done
93
94# TFTP
95echo "   * Guardamos los ficheros PXE de los clientes."
96mv $OPENGNSYS/tftpboot/menu.lst $OPENGNSYS/tftpboot/menu.lst-$(date +%Y%m%d)
97cp -r $TMPDIR/menu.lst  $OPENGNSYS/tftpboot
98
99# Configuración de los clientes
100echo "   * Guardamos la configuración de los clientes."
101mv $OPENGNSYS/client/etc/engine.cfg $OPENGNSYS/client/etc/engine.cfg-$(date +%Y%m%d)
102cp $TMPDIR/engine.cfg $OPENGNSYS/client/etc/engine.cfg
103
104# Páginas de inicio
105echo "   * Guardamos las páginas de inicio."
106mv $OPENGNSYS/www/menus $OPENGNSYS/www/menus-$(date +%Y%m%d)
107cp -r $TMPDIR/menus $OPENGNSYS/www
108
109# MYSQL
110echo "   * Importamos informacion mysql."
111source $OPENGNSYS/etc/ogAdmServer.cfg
112# Crear fichero temporal de acceso a la BD
113MYCNF=$(mktemp /tmp/.my.cnf.XXXXX)
114chmod 600 $MYCNF
115trap "rm -f $MYCNF" 1 2 3 6 9 15
116cat << EOT > $MYCNF
117[client]
118user=$USUARIO
119password=$PASSWORD
120EOT
121
122# Copia de seguridad del estado de la base de datos
123mysqldump --defaults-extra-file=$MYCNF --opt $CATALOG > $MYSQLBCK
124# Importamos los datos nuevos
125mysql --defaults-extra-file=$MYCNF -D "$CATALOG" < $MYSQLFILE &>/dev/null
126[ $? -ne 0 ] && echo "ERROR: Error al importar la información de la base de datos."
127# Importamos datos tabla usuario, ignoramos los repetidos
128sed -i -e s/IGNORE//g -e s/INSERT/"\nALTER TABLE usuarios  ADD UNIQUE (usuario);\n\nINSERT IGNORE"/g $MYSQLFILE2
129mysql --defaults-extra-file=$MYCNF -D "$CATALOG" < $MYSQLFILE2 &>/dev/null
130[ $? -ne 0 ] && echo "ERROR: Error al importar la información de los usuarios de la consola"
131# Borrar fichero temporal
132rm -f $MYCNF
133
134echo -e "Se ha terminado de importar los datos del backup. \n\nSe han realizado copias de seguridad de los archivos antiguos:"
135echo    "  - $DHCPCFGDIR/dhcpd.conf-$(date +%Y%m%d)"
136echo    "  - $OPENGNSYS/tftpboot/menu.lst-$(date +%Y%m%d)"
137echo    "  - $OPENGNSYS/client/etc/engine.cfg-$(date +%Y%m%d)"
138echo    "  - $OPENGNSYS/www/menus-$(date +%Y%m%d)"
139echo -e "  - $MYSQLBCK \n"
140
141echo "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"
Note: See TracBrowser for help on using the repository browser.