Changes between Initial Version and Version 1 of DocumentacionUsuario1.0.6/Respaldo


Ignore:
Timestamp:
Nov 16, 2015, 2:48:20 PM (8 years ago)
Author:
irina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DocumentacionUsuario1.0.6/Respaldo

    v1 v1  
     1[[TOC(heading=Índice)]]
     2= Servidor de respaldo de OpenGnsys =
     3
     4== Uso básico ==
     5
     6Semanalmente se realizará una sincronización semanal del equipo de respaldo con el principal utilizando el script '''sincronizacion_opengnsys en''' /home/usuario/bin.
     7
     8Si queremos utilizar el servicio de opengnsys en la máquina de respaldo hemos de ejecutar el script '''iniciar_opengnsys''' en /home/usuario/bin, que prepara la configuración del dhcp, el cron para arrancar opengnsys si se cayera (según la configuración) y arranca los servicios opengnsys y dhcp.
     9
     10Para apagar el servicio utilizaremos '''apagar_opengnsys''', que además de apagarlo vacía la configuración del dhcp y programa en el cron la sincronización con el servidor principal.
     11
     12
     13== Proceso de sincronización la máquina de respaldo con el servidor principal ==
     14
     15La máquina de respaldo estará normalmente parada.
     16
     17En el fin de semana se arrancará la máquina virtual, que lanzará un script que compruebe si el servicio está funcionando en el servidor principal y si está iniciado:
     18
     19  *  apaga los servicios de opengnsys y dhcpd (si están arrancados)
     20  *  configura el dhcp para que no responda a ningún equipo y apaga el servicio.
     21  *  configura /etc/defaults/opengnsys para que el cron no active los servicios si esta caído.
     22  *  realiza el respaldo de la configuración dhcp, de opengnsys y de la base de datos.
     23  *  al acabar para la máquina virtual.
     24
     25Se sincronizan:
     26
     27  *  /etc/dhcp/dhcpd.conf guardándolo en /etc/dhcpd/OGrespaldo
     28  *  /opt/opengnsys
     29  * la base de datos ogAdmBD → los datos del servidor principal se guardan en /opt/opengnsys/doc/backup_ogAdmBD.sql
     30
     31== Para ver la marcha de la sincronización ==
     32
     33El comando rsync al copiar los archivos crea primero un archivo temporal oculto y luago lo renombra para ver qué archivo está sincronizando tenemos dos posibilidades:
     34
     35'''lsof|grep /opt/opengnsys'''
     36{{{
     37rsync     1516        root  cwd       DIR              252,1       4096    8388609 /opt/opengnsys
     38rsync     1518        root  cwd       DIR              252,1       4096    8388609 /opt/opengnsys
     39rsync     1518        root    3u      REG              252,1 4734320640    8391702 /opt/opengnsys/images/.Win72012.img.JraISS
     40}}}
     41
     42'''find /opt/opengnsys -name "." *'''
     43{{{
     44/opt/opengnsys/images/groups/I2.35/.iptables
     45/opt/opengnsys/images/.Win72012.img.JraISS
     46}}}
     47 
     48== Instalación de la máquina ==
     49Se instala desde cero:
     50
     51  *  Instalación del mismo sistema operativo que el servidor principal: Ubuntu 14.04 (LTS)
     52  *  Instalación de opengnsys 1.0.6.
     53
     54Se copian del servidor principal los archivos de configuramos que no se sincronizan:
     55
     56  *  /etc/default/opengnsys
     57
     58Se configura iptables y tcpwrapper siguiendo la documentación del servidor principal.
     59
     60== Eliminamos todas las posibilidades de que están los dos servicios iniciados a la vez ==
     61
     62__Configuramos opengnsys y dhcp para que no arranquen al inicio__
     63
     64{{{
     65find rc?.d|grep S20opengnsys
     66
     67sudo mv S20opengnsys .S20opengnsys
     68sudo mv rc3.d/S20opengnsys rc3.d/.S20opengnsys
     69sudo mv rc4.d/S20opengnsys rc4.d/.S20opengnsys
     70sudo mv rc5.d/S20opengnsys rc5.d/.S20opengnsys
     71
     72find rc?.d|grep S20isc-dhcp-server
     73
     74sudo mv rc2.d/S20isc-dhcp-server rc2.d/.S20isc-dhcp-server
     75sudo mv rc3.d/S20isc-dhcp-server rc3.d/.S20isc-dhcp-server
     76sudo mv rc4.d/S20isc-dhcp-server rc4.d/.S20isc-dhcp-server
     77sudo mv rc5.d/S20isc-dhcp-server rc5.d/.S20isc-dhcp-server
     78}}}
     79
     80__La configuración del dhcp__
     81No contiene ningún equipo
     82
     83La configuración del servidor principal se copia al directorio /etc/dhcpd/OGrespaldo
     84
     85Al realizar el respaldo borra el contenido del archivo.
     86
     87__En el cron__
     88Se /etc/default/opengnsys se pone RUN_CRONJOB="no" es decir que no arranca el servicio está apagado.
     89
     90Se modifica el cron.d/torrentcreator para que sólo cree ficheros .torrent y .sum cuando está arrancado el servicio opengnsys. (Aunque se ejecute durante la sincronización los ficheros de imágenes no se corrompen porque mientras se copian están ocultos).
     91
     92{{{
     93#* * * * *   root   [ -x /opt/opengnsys/bin/torrent-creator ] && /opt/opengnsys/bin/torrent-creator
     94* * * * *  root   [ "$(pgrep ogAdmRepo | wc -w)" -gt "0"  ]  && /opt/opengnsys/bin/torrent-creator
     95}}}
     96
     97__En iniciar_opengnsys__
     98
     99Comprueba si el servicio está iniciado en el servidor principal, y en ese caso pregunta si queremos arrancarlo en el de respaldo.
     100
     101== Modificaciones necesarias para la restauración ==
     102
     103'''Dhcp:'''
     104
     105Tendremos el archivo de configuración vacío y guardaremos el de respaldo en /etc/dhcp/OGrespaldo, creamos el directorio.
     106
     107{{
     108cd /etc/dhcp
     109sudo mkdir OGrespaldo
     110}}}
     111
     112'''Opengnsys:'''
     113
     114Para comprobar si está iniciado el servicio opengnsys en el servidor principal usaremos nmap. Lo instalamos.
     115{{{
     116sudo apt-get install nmap
     117}}}
     118
     119== Creación de clave pública para la autenticación del servidor principal ==
     120
     121Se utiliza el usuario "usuario".
     122
     123Se genera la clave pública en el servidor de respaldo del usuario "usuario" (por defecto rsa de 2048bits :
     124
     125'''ssh-keygen'''
     126{{{
     127Generating public/private rsa key pair.
     128Enter file in which to save the key (/home/usuario/.ssh/id_rsa):
     129Enter passphrase (empty for no passphrase):
     130Enter same passphrase again:
     131Your identification has been saved in /home/usuario/.ssh/id_rsa.
     132Your public key has been saved in /home/usuario/.ssh/id_rsa.pub.
     133The key fingerprint is:
     134f2:c1:80:40:85:f9:1f:9c:05:3d:e9:c9:2e:0e:0b:4a usuario@servidor-respaldo
     135The key's randomart image is:
     136+--[ RSA 2048]----+
     137| .o+. .o .       |
     138|  o. .  =        |
     139      |     
     140|.   . .          |
     141|                 |
     142+-----------------+
     143}}}
     144
     145En el servidor principal:
     146{{{
     147vi /etc/hosts.allow
     148sshd: … IP_RESPALDO
     149}}}
     150
     151Se copia la clave pública al servidor principal
     152
     153'''ssh-copy-id -i /home/usurio/.ssh/id_dsa.pub usuario@principal'''
     154{{{
     155usuario@principal's password:
     156Now try logging into the machine, with "ssh 'usuario@principal'", and check in:
     157
     158  ~/.ssh/authorized_keys
     159
     160to make sure we haven't added extra keys that you weren't expecting.
     161}}}
     162
     163Comprobamos que en el servidor principal está la clave pública
     164
     165'''cat /home/usuario/.ssh/authorized_keys'''
     166{{{
     167ssh-dss AAA... jeE usuario@respaldo
     168}}}
     169
     170Configurar el servicio ssh del servidor principal para que permita la conexión. En /etc/ssh/sshd_config (estaba por defecto).
     171{{{
     172PubkeyAuthentication yes
     173}}}
     174
     175== Configuramos el demonio rsync en el servidor principal ==
     176
     177En /etc/rsyncd.conf añadimos un recurso compartido apuntando al directorio de opengnsys.
     178
     179{{{
     180max connections = 0
     181log file = /var/log/rsync.log
     182timeout = 300
     183
     184    [ogimages]
     185    comment = Carpeta de imagenes
     186    path = /opt/opengnsys/images
     187    read only = no
     188    list = yes
     189    uid = root
     190    gid = root
     191    auth users = opengnsys
     192    secrets file = /etc/rsyncd.secrets
     193
     194    [respaldo]
     195    comment = Respaldo de Opengnsys
     196    path = /opt/opengnsys
     197    read only = yes
     198    list = yes
     199    uid = root
     200    gid = root
     201    auth users = usuario
     202    secrets file = /etc/rsyncd.secrets
     203    hosts allow = xxx.xxx.xxx.xxx  # Ip servidor de respaldo
     204}}}
     205
     206/etc/rsyncd.secrets
     207{{{
     208Opengnsys:CLAVEOG
     209usuario:CLAVE  -> la clave no es la misma que la del ssh
     210}}}
     211
     212Damos permiso de lectura y escritura sólo al root (ya lo tenía):
     213{{{
     214chmod 600 rsyncd.secrets
     215}}}
     216
     217Nota: si con el script de Opengnsys setsmbpass se cambiara la clave de samba para el usuario opengnsys, también se reescribirá este fichero y será necesario volver a incluir la línea anterior.
     218
     219Configuramos el xinetd → está bien configurado para que escuche rsync.
     220
     221Configuramos tcpwrapper para permita conectarse el servidor de respaldo al rsync (ya estaba incluido), en /etc/hosts.allow
     222{{{
     223rsync: IPRESPALDO*
     224}}}
     225* Nota: los clientes de opengnsys también utilizan rsync, por lo que sus ip's deben estar incluidas en esta línea.
     226
     227En el servidor respaldo creamos el fichero con el contenido de la clave de rsync para que lo lea el script de sincronización, /home/usuario/.ssh/passrsync:
     228{{{
     229CLAVE
     230}}}
     231
     232== Script de sincronización del servidor principal al de respaldo ==
     233
     234Por seguridad si el servidor principal no tiene arrancado los servicios de opengnsys no se puede sincronizarse, entendiendo que en este caso puede haber un error que no queremos replicar en la máquina de respaldo.
     235
     236Permite configurar dentro del script los parámetros: IPMASTER, IPRESPALDO, USUARIORESPALDO y CAMBIOIP. Este último parámetro nos permite decidir si el servidor de respaldo utilizará la misma IP que el principal (CAMBIOIP=no) o tendrá una ip diferente (CAMBIOIP=si)
     237
     238    CAMBIOIP=si: Distinta ip en el servidor principal y en el de respaldo
     239    Me permite tener los dos servidores iniciados a la vez y con la configuración del dhcp repartir la carga entre ambos.
     240
     241    Error conocido: Si se tiene que los clientes que inicien por grub y que además de los sistemas operativos se tenga una línea que permita arrancar OpenGnsys dará problemas. El fichero de configuración del grub en la línea de OpenGnsys tiene los parámetros que se le pasan al kernel, entre ellos la configuración de la ip del servidor de Opengnsys, como la configuración es local cuando arranquemos estos equipos seguirán buscando el servidor principal y darán error. Simplemente habría que cambiar el modo de arranque a OpenGnsys. También se puede volver a instalar el grub tomando la nueva configuración.
     242
     243    CAMBIOIP=no: igual ip en el servidor principal y en el de respaldo
     244    Cuando se pone en marcha el servidor de respaldo hay que cambiarle la ip por la del servidor principal y deshabilitar la tarjeta del red de este último. Los script de iniciar y apagar OpenGnsys dan un mensaje de aviso para que se realice el cambio.
     245
     246El script realiza.
     247
     248  *  Apaga los servicios de opengnsys y dhcp.
     249  *  Vacía la configuración del dhcp y configura que no arranque los servicio de opengnsys.
     250  *  Sincroniza el archivo de configuración de dhcp a /etc/dhcp/OGrespaldo
     251  *  Sincroniza los archivos del directorio /opt/opengnsys y modifica el nombre de la interfaz de red
     252  *  Sincroniza los archivos del directorio /var/lib/tftpboot/.
     253  *  Exporta la base de datos del servidor principal a un fichero, modifica la ip del servidor y la importa en el servidor de respaldo.
     254
     255Nota: el cambio de la ip del servidor se realiza en todos los ficheros de configuración si la variable CAMBIOIP tiene valor "si".
     256
     257'''/home/usuario/bin/sincronizacion_opengnsys'''
     258{{{
     259#!/bin/bash
     260#/**
     261#       sincronizacion_og
     262#@brief sincroniza con servidor principal el directorio /opt/opengnsys, la base de datos ogAdmBD, el dhcp y la configuración PXE.
     263#@param no
     264#@return
     265#@exception 1 El usuario no es root
     266#@exception 2 No hay acceso a los ficheros para obtener las claves
     267#@exception 3 Servidor principal esta apagado
     268#@version 1.1
     269#@date 2014/09/24
     270#@version 1.2 Se permite configurar si se realiza cambio de ip.
     271#       Si no se cambia la ip al sustituir al servidor principal por el de respaldo,
     272#       se baja al t. de red del principal y el servidor de respaldo se configura con esta misma ip.
     273#@date 2015/11/09
     274#*/ ##
     275
     276# CONFIGURACION MASTER Y RESPALDO__________________________
     277CAMBIOIP="NO"  # [SI|NO]
     278IPMASTER="IP_MASTER"
     279IPRESPALDO="IP_RESPALDO"
     280USERRESPALDO="USUARIO"
     281
     282############### _________________________________________
     283OPENGNSYS="/opt/opengnsys"
     284RSYNCCLAVE="/home/$USERRESPALDO/.ssh/passrsync"
     285FILESAL="/var/log/respaldo_opengnsys.log"
     286FILELOG="/var/log/messages"
     287PROG="$(basename $0)"
     288
     289# Para el cambio de IP escapar los . de las ips
     290IPMASTER2=$(echo $IPMASTER |sed s/'\.'/'\\\.'/g)
     291IPRESPALDO2=$(echo $IPRESPALDO |sed s/'\.'/'\\\.'/g)
     292
     293function apaga_servicios {
     294        echo " * Apagamos los servicios" | tee -a  $FILESAL
     295        [ $(pgrep ogAdmRepo |wc -l) == "0" ] || service opengnsys stop
     296        [ $(pgrep dhcpd |wc -l) == "0" ] || service isc-dhcp-server stop
     297        echo " * configuramos para que no se arranca los servicios de opengnsys" | tee -a  $FILESAL
     298        sed -i s/RUN_CRONJOB.*$/RUN_CRONJOB=\"no\"/g  /etc/default/opengnsys
     299        echo " * La configuracion del dhcp la dejamos vacia. "| tee -a  $FILESAL
     300        echo "" > /etc/dhcp/dhcpd.conf
     301}
     302
     303# DHCP
     304function sincronizacion_dhcp {
     305        local DIRRESPALDO ERROR
     306        DIRRESPALDO="/etc/dhcp/respaldoOG"
     307
     308        echo " * Sincronizamos configuracion dhcpd" | tee -a  $FILESAL
     309        [ -r $DIRRESPALDO/dhcpd.conf ] && mv -f $DIRRESPALDO/dhcpd.conf $DIRRESPALDO/dhcpd.conf.ant
     310        rsync -aHAX -e "ssh -i /home/$USERRESPALDO/.ssh/id_rsa"  $USERRESPALDO@$IPMASTER:/etc/dhcp/dhcpd.conf $DIRRESPALDO 2>&1 | tee -a $FILESAL
     311        ERROR=${PIPESTATUS[0]}
     312        if [ $CAMBIOIP == "SI" ]; then
     313                sed -i s/"$IPMASTER2;"/"$IPRESPALDO2;"/g $DIRRESPALDO/dhcpd.conf
     314        fi
     315        return $ERROR
     316}
     317
     318# Opengnsys
     319function sincronizacion_og {
     320        local ERROR TMPDIR IMGDIR
     321        TMPDIR="/tmp/ogsum"
     322        IMGDIR="$OPENGNSYS/images"
     323        echo " * Sincronizamos opengnsys" | tee -a  $FILESAL
     324        # Comprobamos si los fichero img.ant del principal que se corresponden con los .img de respaldo
     325        # Creasmos directorio temporal
     326        [ -x $TMPDIR ] && rm -rf $TMPDIR
     327        mkdir $TMPDIR
     328        # Nos traemos los ficheros .sum del backup de las imágenes del servidor principal
     329        rsync -aHAX --delete --password-file=$RSYNCCLAVE $USERRESPALDO@$IPMASTER::respaldo/images/*.img.sum.ant $TMPDIR 2>&1 | tee -a $FILESAL
     330        # Comparamos el .sum del backup del principal con la imagen del de respaldo
     331        for IMGSUM in $(ls $TMPDIR); do
     332           if [ -r "$IMGDIR/${IMGSUM%.ant}" ]; then
     333              # Si los ficheros son iguales renombramos la imagen con .ant
     334              if  diff "$TMPDIR/$IMGSUM" "$IMGDIR/${IMGSUM%.ant}" &>/dev/null ; then
     335                echo "iguales"
     336                 IMG=${IMGSUM%.sum.ant}
     337                 rm -f "$IMGDIR/$IMG"{,.sum,.full.sum,.torrent}.ant
     338                 mv "$IMGDIR/${IMG}" "$IMGDIR/${IMG}.ant"
     339                 for EXT in sum full.sum torrent; do
     340                     mv "$IMGDIR/$IMG.$EXT" "$IMGDIR/$IMG.$EXT.ant"
     341                 done
     342              fi
     343           fi
     344        done
     345
     346        rsync -aHAX --delete --password-file=$RSYNCCLAVE $USERRESPALDO@$IPMASTER::respaldo/ $OPENGNSYS 2>&1 | tee -a $FILESAL
     347        ERROR=${PIPESTATUS[0]}
     348        if [ $CAMBIOIP == "SI" ]; then
     349                for FILE in $OPENGNSYS/etc/* $OPENGNSYS/client/etc/ogAdmClient* $OPENGNSYS/www/controlacceso.php; do
     350                        sed -i s/"$IPMASTER2"/"$IPRESPALDO2"/g $FILE
     351                done
     352        fi
     353        echo " * Configuramos multicas: bond0 -> eth0"
     354        sed -i  's/bond0/eth0/g' $OPENGNSYS/bin/sendFileMcast
     355        return $ERROR
     356}
     357
     358# TFTP
     359function sincronizacion_tftp {
     360        local ERROR
     361        echo " * Sincronizamos tftp" | tee -a  $FILESAL
     362        rsync -aHAX --delete -e "ssh -i /home/$USERRESPALDO/.ssh/id_rsa" $USERRESPALDO@$IPMASTER:/var/lib/tftpboot/ /var/lib/tftpboot 2>&1 | tee -a $FILESAL
     363        ERROR=${PIPESTATUS[0]}
     364        if [ $CAMBIOIP == "SI" ]; then
     365                sed -i -e s/"$IPMASTER2:"/"$IPRESPALDO2:"/g -e s/"$IPMASTER2 "/"$IPRESPALDO2 "/g /var/lib/tftpboot/menu.lst/*  2>/dev/null
     366        fi
     367        return $ERROR
     368}
     369
     370# MYSQL
     371function sincronizacion_mysql {
     372        local MYSQLFILE USUARIO PASSWORD CATALOG ERROR
     373
     374        echo " * Actualizamos la base de datos de opengnsys" | tee -a $FILESAL
     375
     376        source $OPENGNSYS/etc/ogAdmServer.cfg
     377        MYSQLFILE="$OPENGNSYS/doc/backup_ogAdmBD.sql"
     378        [ -f $MYSQLFILE ] && mv $MYSQLFILE  $MYSQLFILE.ant
     379
     380        # Volcado de BD de servidor principal y cambio ip servidor.
     381        echo "   * Exportamos informacion mysql de servidor principal" | tee -a $FILESAL
     382        ssh  -i /home/$USERRESPALDO/.ssh/id_rsa $USERRESPALDO@$IPMASTER "mysqldump --opt -u $USUARIO -p$PASSWORD $CATALOG" > $MYSQLFILE
     383        chmod 600 $MYSQLFILE
     384        if [ $CAMBIOIP == "SI" ]; then
     385                sed -i -e s/"$IPMASTER2"/"$IPRESPALDO2"/g -e s/"\/$IPMASTER2\/"/"\/$IPRESPALDO2\/"/g $MYSQLFILE
     386                # para evitar problemas con los \.
     387                eval $(echo sed -i -e s/"=$IPMASTER2\\"/"=$IPRESPALDO2\\"/g $MYSQLFILE)
     388        fi
     389        # Si el servicio esta apagado lo arranco
     390        pgrep mysql &> /dev/null || service mysql start
     391
     392        echo "   * Importamos informacion mysql." | tee -a $FILESAL
     393        mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" < $MYSQLFILE  2>&1 | tee -a $FILESAL
     394        ERROR=${PIPESTATUS[0]}
     395        return $ERROR
     396}
     397
     398TIME1=$SECONDS
     399
     400if [ "$USER" != "root" ]; then
     401    date +"%b %d %T $PROG: Error: solo ejecutable por root" >&2
     402    exit 2
     403fi
     404
     405# Comprobamos  acceso a ficheros de donde extraemos las claves.
     406if ! [ -r $OPENGNSYS/etc/ogAdmServer.cfg -a -r $RSYNCCLAVE ]; then
     407    echo "$PROG: ERROR: Sin acceso a la configuración de OpenGnSys." | tee -a $FILESAL
     408    exit 3
     409fi
     410
     411# Comprobamos que el servidor principal esta funcionando bien: si tiene el puerto de ogAdmRepo abierto
     412# Si esta bien hacemos el respaldo; si no nos salimos.
     413if  ! nmap -p 2002 $IPMASTER|grep "2002/tcp open" > /dev/null; then
     414        date +"%b %d %T $PROG: ERROR  el servidor principal no tiene opengnsys arrancado. No realizamos la sincronizacion." | tee -a $FILESAL $FILELOG
     415        exit 4
     416fi
     417date +"%b %d %T $PROG: Comenzamos respaldo de opengnsys desde servidor principal." | tee -a  $FILESAL $FILELOG
     418echo " * Configuración:  CAMBIOIP: $CAMBIOIP, IPMASTER: $IPMASTER, IPRESPALDO: $IPRESPALDO y USERRESPALDO: $USERRESPALDO"
     419
     420ERRORFIN="si"
     421sincronizacion_og && ERRORFIN="no" || date +"%b %d %T $PROG: Error en sincronizacion_opengnsys" |tee -a  $FILESAL $FILELOG
     422sincronizacion_dhcp && ERRORFIN="no" || date +"%b %d %T $PROG: Error en sincronizacion_dhcp" |tee -a  $FILESAL $FILELOG
     423sincronizacion_tftp && ERRORFIN="no" || date +"%b %d %T $PROG: Error en sincronizacion_tftp" |tee -a  $FILESAL $FILELOG
     424sincronizacion_mysql && ERRORFIN="no" || date +"%b %d %T $PROG: Error en sincronizacion_mysql" |tee -a  $FILESAL $FILELOG
     425
     426TIME=$[SECONDS-TIME1]
     427if [ $ERRORFIN == "si" ]; then
     428        date +"%b %d %T opengnsys $(basename $0):  Respaldo de opengnsys desde servidor principal no realizado correctamente. Ha ocurrido un error."
     429else
     430        date +"%b %d %T opengnsys $(basename $0): Respaldo de opengnsys desde servidor principal finalizado." | tee -a $FILESAL $FILELOG
     431        date +"%b %d %T opengnsys $(basename $0): Duracion de la operacion $[TIME/60]m $[TIME%60]s." | tee -a $FILESAL $FILELOG
     432fi
     433
     434# Despues del respaldo apagamos la maquina
     435poweroff
     436}}}
     437
     438
     439== Script para iniciar opengnsys ==
     440Prepara el equipo antes de iniciar el servicio de opengngsys en el servidor de respaldo y lo inicia.
     441
     442    Si CAMBIOIP=no comprueba se la ip es la correcta y avisa que debe estar bajada la tarjeta de servidor principal.
     443    Si CAMBIOIP=si comprueba si el servicio está arrancado en el servidor principal y en ese caso pregunta si se quiere iniciar en el de respaldo.
     444    Si la variable RUN_CRONJOB=yes dentro del script, configura el archivo /etc/default/opengnsys para que en el cron que se comprueben los servicios de opengnsys.
     445    Copia configuración dhcp al lugar correcto.
     446    Arranca los servicios opengnsys y dhcp.
     447    Borra en el cron la sincronización con el servidor principal.
     448
     449'''/home/usuario/bin/iniciar_opengnsys'''
     450{{{
     451#!/bin/bash
     452#/**
     453#       iniciar_opengnsys
     454#@brief Prepara el equipo antes de iniciar el servicio de opengngsys en el servidor de respaldo y lo inicia.
     455#               * Crea en el cron que se comprueben los servicios de opengnsys.
     456#               * Copia configuración dhcp
     457#               * Arranca los servicios opengnsys  y dhcp
     458#               * Borra en el cron la sincronizacion con el servidor principal
     459#@param no
     460#@exception 1 el usuario no es root
     461#@exception 2 Servidor principal encendido
     462#@exception 3 IPs distinta a la del servidor principal
     463#@return nada
     464#@version 1.0
     465#@date 2014/09/25
     466#*/ ##
     467# CAMBIOIP y IPMASTER Tomo valores del script de sincronizacion
     468SCRIPT="./sincronizacion_opengnsys"
     469if [ -r "$SCRIPT" ]; then
     470   eval $(grep CAMBIOIP "$SCRIPT")
     471   eval  $(grep -m 1 IPMASTER "$SCRIPT")
     472else
     473   echo "Se necesita acceso de lectura al script de sincronizacion"
     474   exit 4
     475fi
     476FILESAL="/var/log/respaldo_opengnsys.log"
     477FILELOG="/var/log/messages"
     478FILECRON="/etc/cron.d/opengnsys_sincronizacion"
     479RUN_CRONJOB="no"
     480PROG=$(basename $0)
     481
     482# Comprobamos que lo ejecute el usuario root.
     483if [ "$USER" != "root" ]; then
     484    echo "$PROG: Error: solo ejecutable por root" >&2
     485    exit 1
     486fi
     487
     488if [ "$CAMBIOIP" == "NO" ]; then
     489   echo -e "Según la configuración del script de sincronización el servidor de respaldo \n debe que tener la IP del servidor principal."
     490   # Comprobamos que la ip del servidor de respaldo es la mista que el servidor principal
     491   IP=$(ip -4 -o address show up dev eth0|awk '{print $4}')
     492   if [ "${IP%/*}" == "$IPMASTER" ]; then
     493      echo -e " * Antes de iniciar OpenGnys hay que deshabilitar las tarjetas de red del servidor principal \n   ¿ya se ha realizado?."
     494      read INICIAR
     495      [ "${INICIAR^^}" != "SI" ] && exit 3
     496   else
     497      echo -e " * El servidor de respaldo tiene una ip diferente al principal, \n   antes de iniciar OpenGnsys hay que dehabilitar la tarjeta de red\n   del servidor principal y configurar la del de respaldo."
     498      echo "   Ejemplo comando-> principal: sudo ifdown eth0
     499                     respaldo: sudo ifconfig eth0 ${IPMASTER} netmask 255.255.252.0"
     500      exit 3
     501
     502   fi
     503else
     504   # Comprobamos que el servidor principal esta funcionando bien: si tiene el puerto de ogAdmRepo abiertos
     505   if  nmap -p 2002 ${IPMASTER%/*}|grep "2002/tcp open" > /dev/null; then
     506      echo -n  "El servidor principal esta arrancado, ¿quiere iniciar opengnsys?: [si/No] "
     507      read INICIAR
     508      [ "${INICIAR^^}" != "SI" ] && exit 2
     509   fi
     510fi
     511
     512echo "Segun la configuracion incluimos en el cromtab que compruebe que esten los servicios arrancados." | tee -a $FILESAL
     513[ "$RUN_CRONJOB" == "yes" ] && sed -i s/RUN_CRONJOB.*$/RUN_CRONJOB=\"yes\"/g  /etc/default/opengnsys
     514
     515echo "Actualizamos configuración servicio dhcp."  | tee -a $FILESAL
     516cp -f /etc/dhcp/respaldoOG/dhcpd.conf /etc/dhcp/dhcpd.conf
     517
     518echo "Arrancamos los servicios dhcp y opengnsys" | tee -a $FILESAL $FILELOG
     519[ $(pgrep dhcpd |wc -l) == "0" ] &&  service isc-dhcp-server start || service isc-dhcp-server restart
     520[ $(pgrep opengnsys |wc -l) == "0" ] && service opengnsys start || service opengnsys restart
     521
     522echo "Deshabilitamos la sincronización con el servidor principal"
     523[ -r $FILECRON ] &&  rm -rf $FILECRON
     524}}}
     525
     526== Script para apagar de opengnsys ==
     527
     528    Apaga el servicio de opengnsys y el dhcp
     529    Configura que no se arranquen los servicios de opengnsys si están caídos.
     530    Vacía la configuración del dhcp.
     531    Programa la sincronización semanal con el servidor principal.
     532    Si CAMBIOIP="no" comprueba si la ip del servidor de respaldo es igual a la del principal y en ese caso avisa de que hay que cambiarla
     533
     534'''/home/usuario/bin/apagar_opengnsys'''
     535{{{
     536#!/bin/bash
     537#/**
     538#       apagar_opengnsys
     539#@brief Apaga los servicios de opengnsys, vacia la configuración y programa la sincronización.
     540#               * Apaga el servicio de opengnsys y el dhcp.
     541#               * Configura que no se arranquen los servicios de opengnsys si están caidos.
     542#               * Vacía la configuración del dhcp.
     543#               * Programa la sincronización semanal con el servidor principal.
     544#@param no
     545#@exception 1 el usuario no es root
     546#@exception 2 no hay acceso al script de sincornización para obtener la variable CAMBIOIP
     547#@return nada
     548#@version 1.0
     549#@date 2014/09/25
     550#*/ ##
     551# CAMBIOIP y IPMASTER Tomo valores del script de sincronizacion
     552SCRIPT="./sincronizacion_opengnsys"
     553if [ -r "$SCRIPT" ]; then
     554   eval $(grep CAMBIOIP "$SCRIPT")
     555   eval  $(grep -m 1 IPMASTER "$SCRIPT")
     556else
     557   echo "Se necesita acceso de lectura al script de sincronizacion"
     558   exit 4
     559fi
     560
     561FILESAL="/var/log/respaldo_opengnsys.log"
     562FILELOG="/var/log/messages"
     563FILECRON="/etc/cron.d/opengnsys_sincronizacion"
     564PROG=$(basename $0)
     565
     566# Comprobamos que lo ejecute el usuario root.
     567if [ "$USER" != "root" ]; then
     568    echo "$PROG: Error: solo ejecutable por root" >&2
     569    exit 1
     570fi
     571
     572date +"%b %d %T opengnsys $(basename $0): Apagamos opengnsys y programamos el respaldo desde el servidor principal." | tee -a  $FILESAL $FILELOG
     573echo " * Apagamos los servicios" | tee -a  $FILESAL
     574[ $(pgrep ogAdmRepo |wc -l) == "0" ] || service opengnsys stop
     575[ $(pgrep dhcpd |wc -l) == "0" ] || service isc-dhcp-server stop
     576
     577echo " * Deshabilitamos el arranque de los servicios de opengnsys desde el cron." | tee -a  $FILESAL
     578sed -i s/RUN_CRONJOB.*$/RUN_CRONJOB=\"no\"/g  /etc/default/opengnsys
     579
     580echo " * La configuracion del dhcp la dejamos vacia. "| tee -a  $FILESAL
     581echo ""> /etc/dhcp/dhcpd.conf
     582
     583echo " * Programamos la sincronización semanal con el servidor principal" | tee -a  $FILESAL
     584echo "0 2 * * 6   root   [ -x /home/usuario/bin/sincronizacion_opengnsys ] && /home/usuario/bin/sincronizacion_opengnsys" > $FILECRON
     585
     586if [ "$CAMBIOIP" == "no" ]; then
     587   IP=$(ip -4 -o address show up dev eth0|awk '{print $4}')
     588   if [ "${IP%/*}" == "$IPMASTER" ]; then
     589        echo "IMPORTANTE: la máquina de respaldo tiene la misma ip que el servidor principal, cambiar ip o reiniciar la máquina"
     590   fi
     591fi
     592}}}