source: installer/opengnsys_export.sh

qndtest
Last change on this file was 2961a8d, checked in by Ramón M. Gómez <ramongomez@…>, 4 years ago

#956: Script opengnsys_exports.shsaves ogLive info file and log directory.

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