[[TOC(heading=Índice)]] = Servidor de respaldo de OpenGnsys = == Introducción == Se hace una propuesta de servidor de respaldo en el caso más sencillo posible: tenemos un servidor de respaldo sincronizado de forma programada con el servidor principal, pero cuando el de respaldo ha de tomar el papel del principal se realiza de forma manual. * El servidor OpenGnsys principal tiene instalados tanto la parte de repositorio como de servidor de administración. * El servidor de respaldo está configurado con otra ip para realizar la sincronización. Al reemplazar al principal puede mantener la ip diferente o tomar la del principal, esto debe estar reflejado en la configuración de los script de sincronización y realizarse de forma manual. No se contemplan mecanismos de alta disponibilidad como una ip virtual que compartan ambos servidores, ni heartbeat. == Uso básico == Se realizará una sincronización semanal del equipo de respaldo con el principal utilizando el script '''sincronizacion_opengnsys'''. Si queremos utilizar el servicio de opengnsys en la máquina de respaldo hemos de ejecutar el script '''iniciar_opengnsys''', 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. Para 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. == Proceso de sincronización la máquina de respaldo con el servidor principal == La máquina de respaldo estará normalmente parada. En 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: * apaga los servicios de opengnsys y dhcpd (si están arrancados) * configura el dhcp para que no responda a ningún equipo y apaga el servicio. * configura /etc/defaults/opengnsys para que el cron no active los servicios si esta caído. * realiza el respaldo de la configuración dhcp, tftp, de opengnsys y de la base de datos. * al acabar para la máquina virtual. Se sincronizan: * /etc/dhcp/dhcpd.conf guardándolo en /etc/dhcpd/OGrespaldo * /var/lib/tftpboot * /opt/opengnsys * la base de datos ogAdmBD → los datos del servidor principal se guardan en /opt/opengnsys/doc/backup_ogAdmBD.sql == Para ver la marcha de la sincronización == El comando rsync al copiar los archivos crea primero un archivo temporal oculto y luego lo renombra para ver qué archivo está sincronizando tenemos dos posibilidades: '''lsof|grep /opt/opengnsys''' {{{ rsync 1516 root cwd DIR 252,1 4096 8388609 /opt/opengnsys rsync 1518 root cwd DIR 252,1 4096 8388609 /opt/opengnsys rsync 1518 root 3u REG 252,1 4734320640 8391702 /opt/opengnsys/images/.Win72012.img.JraISS }}} '''find /opt/opengnsys -name ".*"''' {{{ /opt/opengnsys/images/groups/I2.35/.iptables /opt/opengnsys/images/.Win72012.img.JraISS }}} == Instalación de la máquina == Se instala desde cero: * Instalación del mismo sistema operativo que el servidor principal: Ubuntu 14.04 (LTS) * Instalación de opengnsys 1.0.6. Se copian del servidor principal los archivos de configuramos que no se sincronizan: * /etc/default/opengnsys Se configura iptables y tcpwrapper siguiendo la documentación del servidor principal. == Eliminamos todas las posibilidades de que están los dos servicios iniciados a la vez == __Configuramos opengnsys y dhcp para que no arranquen al inicio__ {{{ find rc?.d|grep S20opengnsys sudo mv rc2.d/S20opengnsys rc2.d/.S20opengnsys sudo mv rc3.d/S20opengnsys rc3.d/.S20opengnsys sudo mv rc4.d/S20opengnsys rc4.d/.S20opengnsys sudo mv rc5.d/S20opengnsys rc5.d/.S20opengnsys find rc?.d|grep S20isc-dhcp-server sudo mv rc2.d/S20isc-dhcp-server rc2.d/.S20isc-dhcp-server sudo mv rc3.d/S20isc-dhcp-server rc3.d/.S20isc-dhcp-server sudo mv rc4.d/S20isc-dhcp-server rc4.d/.S20isc-dhcp-server sudo mv rc5.d/S20isc-dhcp-server rc5.d/.S20isc-dhcp-server }}} __La configuración del dhcp__ No contiene ningún equipo La configuración del servidor principal se copia al directorio '''/etc/dhcpd/OGrespaldo''' Al realizar el respaldo borra el contenido del archivo. __En el cron__ Se /etc/default/opengnsys se pone '''RUN_CRONJOB="no"''' es decir que no arranca el servicio si está apagado. Se 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). {{{ #* * * * * root [ -x /opt/opengnsys/bin/torrent-creator ] && /opt/opengnsys/bin/torrent-creator * * * * * root [ "$(pgrep ogAdmRepo | wc -w)" -gt "0" ] && /opt/opengnsys/bin/torrent-creator }}} __En iniciar_opengnsys__ Comprueba si el servicio está iniciado en el servidor principal, y en ese caso pregunta si queremos arrancarlo en el de respaldo. == Modificaciones necesarias para la restauración == '''Dhcp:''' Tendremos el archivo de configuración vacío y guardaremos el de respaldo en /etc/dhcp/OGrespaldo, creamos el directorio. {{{ cd /etc/dhcp sudo mkdir OGrespaldo }}} '''Opengnsys:''' Para comprobar si está iniciado el servicio opengnsys en el servidor principal usaremos nmap. Lo instalamos. {{{ sudo apt-get install nmap }}} == Creación de clave pública para la autenticación del servidor principal == Se utiliza el usuario "usuario". __En el servidor de respaldo:__ Se genera la clave pública en el servidor de respaldo del usuario "usuario" (por defecto rsa de 2048bits) : '''ssh-keygen''' {{{ Generating public/private rsa key pair. Enter file in which to save the key (/home/usuario/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/usuario/.ssh/id_rsa. Your public key has been saved in /home/usuario/.ssh/id_rsa.pub. The key fingerprint is: f2:c1:80:40:85:f9:1f:9c:05:3d:e9:c9:2e:0e:0b:4a usuario@servidor-respaldo The key's randomart image is: +--[ RSA 2048]----+ | .o+. .o . | | o. . = | | |. . . | | | +-----------------+ }}} __En el servidor principal:__ Se da permiso para entrar por ssh desde el servidor de respaldo. {{{ vi /etc/hosts.allow sshd: … IP_RESPALDO }}} Se copia la clave pública al servidor principal. '''ssh-copy-id -i /home/usurio/.ssh/id_dsa.pub usuario@principal''' {{{ usuario@principal's password: Now try logging into the machine, with "ssh 'usuario@principal'", and check in: ~/.ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. }}} Comprobamos que en el servidor principal está la clave pública '''cat /home/usuario/.ssh/authorized_keys''' {{{ ssh-dss AAA... jeE usuario@respaldo }}} Configurar el servicio ssh del servidor principal para que permita la conexión. En /etc/ssh/sshd_config (estaba por defecto). {{{ PubkeyAuthentication yes }}} == Configuramos el demonio rsync en el servidor principal == En /etc/rsyncd.conf añadimos un recurso compartido apuntando al directorio de opengnsys. {{{ max connections = 0 log file = /var/log/rsync.log timeout = 300 [ogimages] comment = Carpeta de imagenes path = /opt/opengnsys/images read only = no list = yes uid = root gid = root auth users = opengnsys secrets file = /etc/rsyncd.secrets [respaldo] comment = Respaldo de Opengnsys path = /opt/opengnsys read only = yes list = yes uid = root gid = root auth users = usuario secrets file = /etc/rsyncd.secrets hosts allow = xxx.xxx.xxx.xxx # Ip servidor de respaldo }}} /etc/rsyncd.secrets {{{ Opengnsys:CLAVEOG usuario:CLAVE -> la clave no es la misma que la del ssh }}} Nota: 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. Damos permiso de lectura y escritura sólo al root (ya lo tenía): {{{ chmod 600 rsyncd.secrets }}} Configuramos el xinetd → está bien configurado para que escuche rsync. Configuramos tcpwrapper para permita conectarse el servidor de respaldo al rsync (ya estaba incluido), en /etc/hosts.allow {{{ rsync: IPRESPALDO* }}} *Nota: los clientes de opengnsys también utilizan rsync, por lo que sus ip's deben estar incluidas en esta línea. En 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: {{{ CLAVE }}} == Script de sincronización del servidor principal al de respaldo == Por 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. Permite 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) '''CAMBIOIP=si. Distinta ip en el servidor principal y en el de respaldo.''' \\ Me permite tener los dos servidores iniciados a la vez y con la configuración del dhcp repartir la carga entre ambos. 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. '''CAMBIOIP=no. Igual ip en el servidor principal y en el de respaldo.''' \\ 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. El script realiza. * Apaga los servicios de opengnsys y dhcp. * Vacía la configuración del dhcp y configura que no arranque los servicios de opengnsys. * Sincroniza el archivo de configuración de dhcp a /etc/dhcp/OGrespaldo. * Sincroniza los archivos del directorio /opt/opengnsys y modifica el nombre de la interfaz de red (caso específico, comentado es script). * Sincroniza los archivos del directorio /var/lib/tftpboot/. * Exporta la base de datos del servidor principal a un fichero, modifica la ip del servidor y la importa en el servidor de respaldo. Nota: el cambio de la ip del servidor se realiza en todos los ficheros de configuración si la variable CAMBIOIP tiene valor "si". '''/home/usuario/bin/sincronizacion_opengnsys''' {{{ #!/bin/bash #/** # sincronizacion_opengnsys #@brief sincroniza con servidor principal el directorio /opt/opengnsys, la base de datos ogAdmBD, el dhcp y la configuración PXE. #@param no #@return #@exception 1 El usuario no es root #@exception 2 No hay acceso a los ficheros para obtener las claves #@exception 3 Servidor principal esta apagado #@version 1.1 #@date 2014/09/24 #@version 1.2 Se permite configurar si se realiza cambio de ip. # Si no se cambia la ip al sustituir al servidor principal por el de respaldo, # se baja al t. de red del principal y el servidor de respaldo se configura con esta misma ip. #@date 2015/11/09 #*/ ## # CONFIGURACION MASTER Y RESPALDO__________________________ CAMBIOIP="NO" # [SI|NO] IPMASTER="IP_MASTER" IPRESPALDO="IP_RESPALDO" USERRESPALDO="USUARIO" ############### _________________________________________ OPENGNSYS="/opt/opengnsys" RSYNCCLAVE="/home/$USERRESPALDO/.ssh/passrsync" FILESAL="/var/log/respaldo_opengnsys.log" FILELOG="/var/log/messages" PROG="$(basename $0)" # Para el cambio de IP escapar los . de las ips IPMASTER2=$(echo $IPMASTER |sed s/'\.'/'\\\.'/g) IPRESPALDO2=$(echo $IPRESPALDO |sed s/'\.'/'\\\.'/g) function apaga_servicios { echo " * Apagamos los servicios" | tee -a $FILESAL [ $(pgrep ogAdmRepo |wc -l) == "0" ] || service opengnsys stop [ $(pgrep dhcpd |wc -l) == "0" ] || service isc-dhcp-server stop echo " * configuramos para que no se arranca los servicios de opengnsys" | tee -a $FILESAL sed -i s/RUN_CRONJOB.*$/RUN_CRONJOB=\"no\"/g /etc/default/opengnsys echo " * La configuracion del dhcp la dejamos vacia. "| tee -a $FILESAL echo "" > /etc/dhcp/dhcpd.conf } # DHCP function sincronizacion_dhcp { local DIRRESPALDO ERROR DIRRESPALDO="/etc/dhcp/respaldoOG" echo " * Sincronizamos configuracion dhcpd" | tee -a $FILESAL [ -r $DIRRESPALDO/dhcpd.conf ] && mv -f $DIRRESPALDO/dhcpd.conf $DIRRESPALDO/dhcpd.conf.ant rsync -aHAX -e "ssh -i /home/$USERRESPALDO/.ssh/id_rsa" $USERRESPALDO@$IPMASTER:/etc/dhcp/dhcpd.conf $DIRRESPALDO 2>&1 | tee -a $FILESAL ERROR=${PIPESTATUS[0]} if [ $CAMBIOIP == "SI" ]; then sed -i s/"$IPMASTER2;"/"$IPRESPALDO2;"/g $DIRRESPALDO/dhcpd.conf fi return $ERROR } # Opengnsys function sincronizacion_og { local ERROR TMPDIR IMGDIR TMPDIR="/tmp/ogsum" IMGDIR="$OPENGNSYS/images" echo " * Sincronizamos opengnsys" | tee -a $FILESAL # Comprobamos si los fichero img.ant del principal que se corresponden con los .img de respaldo # Creasmos directorio temporal [ -x $TMPDIR ] && rm -rf $TMPDIR mkdir $TMPDIR # Nos traemos los ficheros .sum del backup de las imágenes del servidor principal rsync -aHAX --delete --password-file=$RSYNCCLAVE $USERRESPALDO@$IPMASTER::respaldo/images/*.img.sum.ant $TMPDIR 2>&1 | tee -a $FILESAL # Comparamos el .sum del backup del principal con la imagen del de respaldo for IMGSUM in $(ls $TMPDIR); do if [ -r "$IMGDIR/${IMGSUM%.ant}" ]; then # Si los ficheros son iguales renombramos la imagen con .ant if diff "$TMPDIR/$IMGSUM" "$IMGDIR/${IMGSUM%.ant}" &>/dev/null ; then echo "iguales" IMG=${IMGSUM%.sum.ant} rm -f "$IMGDIR/$IMG"{,.sum,.full.sum,.torrent}.ant mv "$IMGDIR/${IMG}" "$IMGDIR/${IMG}.ant" for EXT in sum full.sum torrent; do mv "$IMGDIR/$IMG.$EXT" "$IMGDIR/$IMG.$EXT.ant" done fi fi done rsync -aHAX --delete --password-file=$RSYNCCLAVE $USERRESPALDO@$IPMASTER::respaldo/ $OPENGNSYS 2>&1 | tee -a $FILESAL ERROR=${PIPESTATUS[0]} if [ $CAMBIOIP == "SI" ]; then for FILE in $OPENGNSYS/etc/* $OPENGNSYS/client/etc/ogAdmClient* $OPENGNSYS/www/controlacceso.php; do sed -i s/"$IPMASTER2"/"$IPRESPALDO2"/g $FILE done fi #echo " * Configuramos multicast: bond0 -> eth0" #sed -i 's/bond0/eth0/g' $OPENGNSYS/bin/sendFileMcast return $ERROR } # TFTP function sincronizacion_tftp { local ERROR echo " * Sincronizamos tftp" | tee -a $FILESAL rsync -aHAX --delete -e "ssh -i /home/$USERRESPALDO/.ssh/id_rsa" $USERRESPALDO@$IPMASTER:/var/lib/tftpboot/ /var/lib/tftpboot 2>&1 | tee -a $FILESAL ERROR=${PIPESTATUS[0]} if [ $CAMBIOIP == "SI" ]; then sed -i -e s/"$IPMASTER2:"/"$IPRESPALDO2:"/g -e s/"$IPMASTER2 "/"$IPRESPALDO2 "/g /var/lib/tftpboot/menu.lst/* 2>/dev/null fi return $ERROR } # MYSQL function sincronizacion_mysql { local MYSQLFILE USUARIO PASSWORD CATALOG ERROR echo " * Actualizamos la base de datos de opengnsys" | tee -a $FILESAL source $OPENGNSYS/etc/ogAdmServer.cfg MYSQLFILE="$OPENGNSYS/doc/backup_ogAdmBD.sql" [ -f $MYSQLFILE ] && mv $MYSQLFILE $MYSQLFILE.ant # Volcado de BD de servidor principal y cambio ip servidor. echo " * Exportamos informacion mysql de servidor principal" | tee -a $FILESAL ssh -i /home/$USERRESPALDO/.ssh/id_rsa $USERRESPALDO@$IPMASTER "mysqldump --opt -u $USUARIO -p$PASSWORD $CATALOG" > $MYSQLFILE chmod 600 $MYSQLFILE if [ $CAMBIOIP == "SI" ]; then sed -i -e s/"$IPMASTER2"/"$IPRESPALDO2"/g -e s/"\/$IPMASTER2\/"/"\/$IPRESPALDO2\/"/g $MYSQLFILE # para evitar problemas con los \. eval $(echo sed -i -e s/"=$IPMASTER2\\"/"=$IPRESPALDO2\\"/g $MYSQLFILE) fi # Si el servicio esta apagado lo arranco pgrep mysql &> /dev/null || service mysql start echo " * Importamos informacion mysql." | tee -a $FILESAL mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" < $MYSQLFILE 2>&1 | tee -a $FILESAL ERROR=${PIPESTATUS[0]} return $ERROR } TIME1=$SECONDS if [ "$(whoami)" != "root" ]; then date +"%b %d %T $PROG: Error: solo ejecutable por root" | tee -a $FILESAL exit 2 fi # Comprobamos acceso a ficheros de donde extraemos las claves. if ! [ -r $OPENGNSYS/etc/ogAdmServer.cfg -a -r $RSYNCCLAVE ]; then echo "$PROG: ERROR: Sin acceso a la configuración de OpenGnSys." | tee -a $FILESAL exit 3 fi # Comprobamos que el servidor principal esta funcionando bien: si tiene el puerto de ogAdmRepo abierto # Si esta bien hacemos el respaldo; si no nos salimos. if ! nmap -p 2002 $IPMASTER|grep "2002/tcp open" > /dev/null; then date +"%b %d %T $PROG: ERROR el servidor principal no tiene opengnsys arrancado. No realizamos la sincronizacion." | tee -a $FILESAL $FILELOG exit 4 fi date +"%b %d %T $PROG: Comenzamos respaldo de opengnsys desde servidor principal." | tee -a $FILESAL $FILELOG echo " * Configuración: CAMBIOIP: $CAMBIOIP, IPMASTER: $IPMASTER, IPRESPALDO: $IPRESPALDO y USERRESPALDO: $USERRESPALDO" CORRECTO="" sincronizacion_og && CORRECTO="og" || date +"%b %d %T $PROG: Error en sincronizacion_opengnsys" |tee -a $FILESAL sincronizacion_dhcp && CORRECTO="$CORRECTO dhcp" || date +"%b %d %T $PROG: Error en sincronizacion_dhcp" |tee -a $FILESAL sincronizacion_tftp && CORRECTO="$CORRECTO tftp" || date +"%b %d %T $PROG: Error en sincronizacion_tftp" |tee -a $FILESAL sincronizacion_mysql && CORRECTO="$CORRECTO mysql" || date +"%b %d %T $PROG: Error en sincronizacion_mysql" |tee -a $FILESAL TIME=$[SECONDS-TIME1] if [ $CORRECTO == "og dhcp tftp mysql" ]; then date +"%b %d %T opengnsys $(basename $0): Respaldo de opengnsys desde servidor principal finalizado." | tee -a $FILESAL date +"%b %d %T opengnsys $(basename $0): Duracion de la operacion $[TIME/60]m $[TIME%60]s." | tee -a $FILESAL else date +"%b %d %T opengnsys $(basename $0): Respaldo de opengnsys desde servidor principal no realizado correctamente. Ha ocurrido un error." | tee -a $FILESAL date +"%b %d %T opengnsys $(basename $0): Sí ha ido bien el respaldo de $CORRECTO." | tee -a $FILESAL fi # Despues del respaldo apagamos la maquina poweroff }}} == Script para iniciar opengnsys == Prepara el equipo antes de iniciar el servicio de opengngsys en el servidor de respaldo y lo inicia. * Si CAMBIOIP=no comprueba se la ip es la correcta y avisa que debe estar bajada la tarjeta de servidor principal. * 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. * 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. * Copia configuración dhcp al lugar correcto. * Arranca los servicios opengnsys y dhcp. * Borra en el cron la sincronización con el servidor principal. '''/home/usuario/bin/iniciar_opengnsys''' {{{ #!/bin/bash #/** # iniciar_opengnsys #@brief Prepara el equipo antes de iniciar el servicio de opengngsys en el servidor de respaldo y lo inicia. # * Crea en el cron que se comprueben los servicios de opengnsys. # * Copia configuración dhcp # * Arranca los servicios opengnsys y dhcp # * Borra en el cron la sincronizacion con el servidor principal #@param no #@exception 1 el usuario no es root #@exception 2 Servidor principal encendido #@exception 3 IPs distinta a la del servidor principal #@return nada #@version 1.0 #@date 2014/09/25 #*/ ## # CAMBIOIP y IPMASTER Tomo valores del script de sincronizacion SCRIPT="./sincronizacion_opengnsys" if [ -r "$SCRIPT" ]; then eval $(grep CAMBIOIP "$SCRIPT") eval $(grep -m 1 IPMASTER "$SCRIPT") else echo "Se necesita acceso de lectura al script de sincronizacion" exit 4 fi FILESAL="/var/log/respaldo_opengnsys.log" FILELOG="/var/log/messages" FILECRON="/etc/cron.d/opengnsys_sincronizacion" RUN_CRONJOB="no" PROG=$(basename $0) # Comprobamos que lo ejecute el usuario root. if [ "$(whoami)" != "root" ]; then echo "$PROG: Error: solo ejecutable por root" | tee -a $FILESAL exit 1 fi if [ "$CAMBIOIP" == "NO" ]; then 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." # Comprobamos que la ip del servidor de respaldo es la mista que el servidor principal IP=$(ip -4 -o address show up dev eth0|awk '{print $4}') if [ "${IP%/*}" == "$IPMASTER" ]; then echo -e " * Antes de iniciar OpenGnys hay que deshabilitar las tarjetas de red del servidor principal \n ¿ya se ha realizado?." read INICIAR [ "${INICIAR^^}" != "SI" ] && exit 3 else 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." echo " Ejemplo comando-> principal: sudo ifdown eth0 respaldo: sudo ifconfig eth0 ${IPMASTER} netmask 255.255.252.0" exit 3 fi else # Comprobamos que el servidor principal esta funcionando bien: si tiene el puerto de ogAdmRepo abiertos if nmap -p 2002 ${IPMASTER%/*}|grep "2002/tcp open" > /dev/null; then echo -n "El servidor principal esta arrancado, ¿quiere iniciar opengnsys?: [si/No] " read INICIAR [ "${INICIAR^^}" != "SI" ] && exit 2 fi fi echo "Segun la configuracion incluimos en el cromtab que compruebe que esten los servicios arrancados." | tee -a $FILESAL [ "$RUN_CRONJOB" == "yes" ] && sed -i s/RUN_CRONJOB.*$/RUN_CRONJOB=\"yes\"/g /etc/default/opengnsys echo "Actualizamos configuración servicio dhcp." | tee -a $FILESAL cp -f /etc/dhcp/respaldoOG/dhcpd.conf /etc/dhcp/dhcpd.conf echo "Arrancamos los servicios dhcp y opengnsys" | tee -a $FILESAL $FILELOG [ $(pgrep dhcpd |wc -l) == "0" ] && service isc-dhcp-server start || service isc-dhcp-server restart [ $(pgrep opengnsys |wc -l) == "0" ] && service opengnsys start || service opengnsys restart echo "Deshabilitamos la sincronización con el servidor principal" [ -r $FILECRON ] && rm -rf $FILECRON }}} == Script para apagar de opengnsys == * Apaga el servicio de opengnsys y el dhcp * Configura que no se arranquen los servicios de opengnsys si están caídos. * Vacía la configuración del dhcp. * Programa la sincronización semanal con el servidor principal. * 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 '''/home/usuario/bin/apagar_opengnsys''' {{{ #!/bin/bash #/** # apagar_opengnsys #@brief Apaga los servicios de opengnsys, vacia la configuración y programa la sincronización. # * Apaga el servicio de opengnsys y el dhcp. # * Configura que no se arranquen los servicios de opengnsys si están caidos. # * Vacía la configuración del dhcp. # * Programa la sincronización semanal con el servidor principal. #@param no #@exception 1 el usuario no es root #@exception 2 no hay acceso al script de sincornización para obtener la variable CAMBIOIP #@return nada #@version 1.0 #@date 2014/09/25 #*/ ## # CAMBIOIP y IPMASTER Tomo valores del script de sincronizacion SCRIPT="./sincronizacion_opengnsys" if [ -r "$SCRIPT" ]; then eval $(grep CAMBIOIP "$SCRIPT") eval $(grep -m 1 IPMASTER "$SCRIPT") else echo "Se necesita acceso de lectura al script de sincronizacion" exit 4 fi FILESAL="/var/log/respaldo_opengnsys.log" FILELOG="/var/log/messages" FILECRON="/etc/cron.d/opengnsys_sincronizacion" PROG=$(basename $0) # Comprobamos que lo ejecute el usuario root. if [ "$USER" != "root" ]; then echo "$PROG: Error: solo ejecutable por root" >&2 exit 1 fi date +"%b %d %T opengnsys $(basename $0): Apagamos opengnsys y programamos el respaldo desde el servidor principal." | tee -a $FILESAL $FILELOG echo " * Apagamos los servicios" | tee -a $FILESAL [ $(pgrep ogAdmRepo |wc -l) == "0" ] || service opengnsys stop [ $(pgrep dhcpd |wc -l) == "0" ] || service isc-dhcp-server stop echo " * Deshabilitamos el arranque de los servicios de opengnsys desde el cron." | tee -a $FILESAL sed -i s/RUN_CRONJOB.*$/RUN_CRONJOB=\"no\"/g /etc/default/opengnsys echo " * La configuracion del dhcp la dejamos vacia. "| tee -a $FILESAL echo ""> /etc/dhcp/dhcpd.conf echo " * Programamos la sincronización semanal con el servidor principal" | tee -a $FILESAL echo "0 2 * * 6 root [ -x /home/usuario/bin/sincronizacion_opengnsys ] && /home/usuario/bin/sincronizacion_opengnsys" > $FILECRON if [ "$CAMBIOIP" == "no" ]; then IP=$(ip -4 -o address show up dev eth0|awk '{print $4}') if [ "${IP%/*}" == "$IPMASTER" ]; then echo "IMPORTANTE: la máquina de respaldo tiene la misma ip que el servidor principal, cambiar ip o reiniciar la máquina" fi fi }}}