source: installer/opengnsys_export.sh @ 4ec8744

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 4ec8744 was 3d2beda, checked in by irina <irinagomez@…>, 7 years ago

opengnsys_export.sh: Se muestra error si el comando 'realpath' no está instalado

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

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