source: installer/opengnsys_export.sh @ 9c9de82

Last change on this file since 9c9de82 was cdcbc93, checked in by Irina Gómez <irinagomez@…>, 4 years ago

#988 opengnsys_export.sh compatibility with 1.1.1c version

  • Property mode set to 100755
File size: 4.3 KB
RevLine 
[ae41ee8]1#!/bin/bash
2#         exportclient str_backupfile
3#@file    exportclient
4#@brief   Exporta los clientes 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 a la configuración de OpenGnsys.
9#@exception 4 No existe el directorio de backup.
[3d2beda]10#@exception 5 Es necesario instalar el comando realpath.
11#@warning This script uses "realpath" command.
[ae41ee8]12#@version 1.1.0 - Versión inicial.
13#@author  Irina Gómez - ETSII Univ. Sevilla
14#@date    2016-10-18
[49a0502]15#@version 1.1.0 - Cambia cómo se exporta la base de datos para permitir importar en versiones posteriores.
16#@note    Incompatible con versiones de opengnsys_import.sh anteriores a esta fecha.
17#@date    2018-02-14
[c9ecf0d]18#@version 1.1.1 - Incluye scripts personalizados (*Custom)
19#@date    2019-07-25
[179e1b1]20#@version 1.2.0 - mysqldump no exporta los tablespaces por compatibilidad con mysql 5.7.31 (no los usamos).
21#@date    2020-08-10
[ae41ee8]22#*/ ##
23
24# Variables globales.
25PROG="$(basename $0)"
26
27OPENGNSYS="/opt/opengnsys"
[cb74b30]28TMPDIR=/tmp
[ae41ee8]29MYSQLFILE="$TMPDIR/ogAdmBD.sql"
[cb74b30]30BACKUPPREFIX="opengnsys_export"
[ae41ee8]31
32# Si se solicita, mostrar ayuda.
33if [ "$*" == "help" ]; then
34    echo -e "$PROG: Exporta los datos de OpenGnsys desde un archivo de backup:" \
35           " dhcp, pxe, páginas de inicio y configuración de la consola.\n" \
36           "    Formato: $PROG backup_file\n" \
37           "    Ejemplo: $PROG backup.tgz"
38    exit
39fi
40
41# Comprobar parámetros.
42# Comprobamos número de parámetros
43if [ $# -ne 1 ]; then
44    echo "$PROG: ERROR: Error de formato: $PROG backup_file"
45    exit 1
46fi
47
48if [ "$USER" != "root" ]; then
49    echo "$PROG: Error: solo ejecutable por root." >&2
50    exit 2
51fi
52
[3d2beda]53# Comprobamos que esté instalado el comando realpath
54if ! which realpath &>/dev/null ; then
55    echo "Need to install \"realpath\"."
56    exit 5
57fi
58
[ae41ee8]59
60# Comprobamos que exista el directorio para el archivo de backup
61BACKUPDIR=$(realpath $(dirname $1) 2>/dev/null)
[cb74b30]62[ $? -ne 0 ] && echo "$PROG: Error: No existe el directorio para el archivo de backup" && exit 4
[ae41ee8]63BACKUPFILE="$BACKUPDIR/$(basename $1)"
64
65# DHCP
[cb74b30]66for DIR in /etc/dhcp /etc/dhcp3; do
67    [ -r $DIR/dhcpd.conf ] && DHCPDIR=$DIR
[ae41ee8]68done
69
[749ae5f]70# Exportar la base de datos
[ae41ee8]71echo "Exportamos la información de la base de datos."
[4972d15]72source $OPENGNSYS/lib/ogfunctions.sh || exit 1
[cdcbc93]73# Comprobamos  acceso a ficheros de configuración
74
75if [ -r $OPENGNSYS/etc/ogserver.json ]; then
76    source_json_config $OPENGNSYS/etc/ogserver.json
77elif [ -r $OPENGNSYS/etc/ogAdmServer.cfg ]; then
78    source $OPENGNSYS/etc/ogAdmServer.cfg
79else
80    echo "$PROG: ERROR: Sin acceso a la configuración de OpenGnsys." | tee -a $FILESAL
81    exit 3
82fi
[4972d15]83
[749ae5f]84# Crear fichero temporal de acceso a la BD
85MYCNF=$(mktemp /tmp/.my.cnf.XXXXX)
86chmod 600 $MYCNF
[cb74b30]87trap "rm -f $MYCNF $MYSQLFILE $TMPDIR/IPSERVER.txt" 1 2 3 6 9 15
[749ae5f]88cat << EOT > $MYCNF
89[client]
90user=$USUARIO
91password=$PASSWORD
92EOT
93
[179e1b1]94mysqldump --defaults-extra-file=$MYCNF --opt --no-tablespaces $CATALOG > $MYSQLFILE
[c9ecf0d]95chmod 400 $MYSQLFILE
[49a0502]96
[749ae5f]97# Borrar fichero temporal
98rm -f $MYCNF
[ae41ee8]99
100# IP SERVIDOR
101echo $ServidorAdm > $TMPDIR/IPSERVER.txt
102
[cb74b30]103# Si existe ya archivo de backup lo renombramos
[ae41ee8]104[ -r $BACKUPFILE ] && mv $BACKUPFILE $BACKUPFILE-$(date +%Y%M%d)
105
106# Empaquetamos los ficheros
107echo "Creamos un archivo comprimido con los datos: $BACKUPFILE."
[c9ecf0d]108CUSTOMFILES=$(find $OPENGNSYS/client/scripts -name "*Custom" -exec basename {} \;)
[cb74b30]109tar -cvzf $BACKUPFILE --transform="s!^!$BACKUPPREFIX/!" \
[2961a8d]110          --exclude "log/opengnsys_installer.log" \
[cb74b30]111          -C $(dirname $MYSQLFILE) $(basename $MYSQLFILE) \
112          -C $TMPDIR IPSERVER.txt \
113          -C $DHCPDIR dhcpd.conf \
[9815cac]114          -C $OPENGNSYS/client/etc engine.cfg engine.json \
[c9ecf0d]115          -C $OPENGNSYS/client/scripts $CUSTOMFILES \
116          -C $OPENGNSYS/doc VERSION.txt VERSION.json \
[2961a8d]117          -C $OPENGNSYS/etc ogliveinfo.json \
118          -C $OPENGNSYS log \
[c9ecf0d]119          -C $OPENGNSYS/tftpboot menu.lst grub \
[cb74b30]120          -C $OPENGNSYS/www menus \
121          -C /etc default/opengnsys &>/dev/null
[749ae5f]122
[ae41ee8]123# Cambio permisos: sólo puede leerlo el root
124chmod 600 $BACKUPFILE
[cb74b30]125
126# Borrar ficheros temporales
127rm -f $MYSQLFILE $TMPDIR/IPSERVER.txt
[c8a7dd7]128
129echo -e "\nNo conveniente situar el fichero de backup dentro de /opt/opengnsys" \
130        "\n    ya que se borrará si desinstala OpenGnsys."
Note: See TracBrowser for help on using the repository browser.