Mostrando entradas con la etiqueta respaldo. Mostrar todas las entradas
Mostrando entradas con la etiqueta respaldo. Mostrar todas las entradas

miércoles, 5 de febrero de 2014

Preinstalación automática de Servidor (Shell Script)

El código fuente de este script nos puede ser muy útil para realizar la instalación inicial de los servicios básicos de un Servidor. Entre otros, podremos instalar: Apache, PHP, MySQL, SSH, Servicio de correo electrónico, sistema de alertas por email, Webmin, PHPMyadmin, etc. Todo de una manera muy automática y relativamente cómoda.

Revísalo y cambia lo que necesites, podría tener algún bug. Es código directamente generado en clase de 2ºSMR - 2014 IES Oretania.


#!/bin/bash

#Este script sirve para preparar rápidamente un
#servidor con los servicios básicos más comunes.

#Además, es posible instalar webmin a través de 
#un script previo que se publicó en este mismo blog.
#Otras funciones añadidas permiten instalar phpmyadmin,
#así como habilitar un servidor básico de correo
#electrónico para que el servidor pueda enviar
#alertas por email a su administrador del sistema.

#----------------------------------------------------
#    FUNCIONES
#----------------------------------------------------

function menu()
{

    clear
    echo "*********** MENU SERVICIOS ***********"
    echo "*                     *"
    echo "*  1.- Iniciar asistente instalación *"
    echo "*  2.- Instalar Webmin               *"
    echo "*  3.- Instalar Php MyAdmin          *"
    echo "*  4.- Alertas por email             *"
    echo "*  5.- Salir                         *"
    echo "*                     *"
    echo "**************************************"

}

function asistente()
{

    which tasksel > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Inicializando asistente, un momento por favor..."
        apt-get install -y tasksel #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse Tasksel."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi
    tasksel

    #Instalaremos lo que necesitemos a través de esta
    #herramienta.

}

function phpmyadmin()
{

    which phpmyadmin > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Instalando phpmyadmin, un momento por favor..."
        apt-get install -y phpmyadmin #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse phpmyadmin."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi
    #Abrimos phpmyadmin para que el usuario empiece a usarlo
    firefox http://localhost/phpmyadmin

}

function webmin()
{
    #Llamamos al script de instalación de webmin
    ./instalawebmin.sh
}

function alertasemail()
{
    which ssmtp > /dev/null 2>&1
    if [ $? -ne 0 ]
    then   
        echo "Instalando ssmtp, un momento por favor..."
        apt-get install -y ssmtp #> /dev/null 2>&1
        if [ $? -ne 0 ]
        then
            echo "Error, no puede ejecutarse ssmtp."
            read -p "Pulse una tecla para finalizar."
            exit 1
        fi   
    fi

   
    read -p "Indica la dirección de destino de las alertas: " email_alertas

    if [ -f /etc/ssmtp/ssmtp.conf ]
    then
        #sacamos copia seguridad
        if [ -f /etc/ssmtp/ssmtp_old.conf ]
        then
            echo "no se sacará copia de ssmtp.conf"
        else
            cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp_old.conf
            read -p "Indica la dirección de email del servidor(sin @gmail.com): " email_servidor
            #Solicitamos contraseña de manera oculta
            echo "Indica la constraseña de la cuenta: "   
            read -s clave
        fi
        #comprobación errores?


        #Volcamos aquí toda la configuración a
        #los dos archivos de configuración de ssmtp
        echo -e "root=$email_servidor@gmail.com \n
mailhub=smtp.gmail.com:587 \n
#rewriteDomain= \n
hostname=$email_servidor \n
AuthUser=$email_servidor@gmail.com \n
AuthPass=$clave \n
FromLineOverride=YES \n
UseSTARTTLS=YES" > /etc/ssmtp/ssmtp.conf
       
    else

        echo "Error al intentar configurar ssmtp: ssmtp.conf."
        exit 1
    fi

    if [ -f /etc/ssmtp/revaliases ]
    then
        #sacamos copia seguridad
        if [ -f /etc/ssmtp/revaliases_old ]
        then
            echo "no se sacará copia de ssmtp.conf"
        else
            cp /etc/ssmtp/revaliases /etc/ssmtp/revaliases_old
        fi
       
        #Modificamos ahora el archivo
        echo "root:$email_servidor@gmail.com:smtp.gmail.com:587" >> /etc/ssmtp/revaliases
        #el nombre de usuario debe de ser uno con privilegios de
        #administrador
        echo "alumno:$email_servidor@gmail.com:smtp.gmail.com:587" >> /etc/ssmtp/revaliases
    else
        echo "Error al intentar configurar ssmtp: revaliases.conf"
        exit 1
    fi
   
    #Enviamos un email de confirmación
    ssmtp $email_alertas < correo.txt

    
    #Donde correo.txt debe tener el formato
    #from: origen del mensaje
    #subject: asunto del mensaje
    #texto del mensaje que se quiere enviar

}




#----------------------------------------------------
#    PROGRAMA PRINCIPAL
#----------------------------------------------------


menu
opcion=""
while [ "$opcion" == "" ]
do
    read -p "Introduce la opción elegida: " opcion
    case $opcion in
        1)asistente;read;;
        2)echo "Instalando Webmin...";webmin;;
        3)echo "Instalando Php MyAdmin";phpmyadmin;;
        4)echo "Alertas por email";alertasemail;;
        5)echo "Finalizando script";exit 0;;
        *)echo "Opción no válida";opcion="";;
    esac
    menu   
    opcion=""
   
done

 El correo electrónico que se ha de generar en el archivo correo.txt que se ha de enviar en la función de "alertasemail" tendría la siguiente forma:

from: servidor que envía la alerta
subject: asunto de la alerta
Este es un correo de confirmación de la correcta instalación y configuración del servicio de alertas por correo electrónico.

viernes, 30 de noviembre de 2012

Ejemplo Script Inicio de Sesión: Asegurando ntldr y ntdetect.com

Este es un script sencillo que podríamos colocar como script de inicio de sesión para un administrador de un sistema Windows Server 2003. Se trata de un archivo Batch que realiza una copia de respaldo de un par de archivos vitales para que Windows Server 2003 pueda arrancar después de un fallo del tipo "Error, falta archivo ntldr". En concreto se respaldan los archivos ntldr y ntdetect.com (aunque existen algunos más, que son vitales y que podríamos incluir en esta copia).

De este modo, si perdiéramos alguno de estos ficheros por un borrado accidental, algún software malintencionado o un deterioro de los mismos, no sería necesario (a priori) recuperar la máquina Windows Server 2003 a través de la utilización de un LiveCD de Linux. Sólo con entrar con la consola del DOS al sistema, bastaría con volver a copiar a la raíz del disco que contenía el sistema operativo, los archivos que se encontraran en la carpeta de seguridad creada por este script.

Es un script muy básico y totalmente mejorable, pero como ejercicio de clase para repaso de comandos y estructuras de control de archivos Batch, ha sido muy útil. 

@ECHO OFF
REM Este archivo por lotes inserta anotaciones en un log. Primero creamos la carpeta SEGURIDAD directamente REM en la unidad C, aunque si existe no la creará y si no existe si lo hará.

REM Además se respaldan dos archivos del sistema
REM ntldr y ntdetect.com, guardándolos en la misma carpeta SEGURIDAD.



:INICIO
IF NOT EXIST c:\SEGURIDAD GOTO NOEXISTE
IF EXIST c:\SEGURIDAD GOTO SIEXISTE

:NOEXISTE
ECHO La carpetaSEGURIDAD no existe, creándola...
MKDIR C:\SEGURIDAD
IF ERRORLEVEL 1 GOTO ERROR1
GOTO SIEXISTE

:SIEXISTE
IF EXIST C:\SEGURIDAD\LOG.txt GOTO SIARCH
IF NOT EXIST C:\SEGURIDAD\LOG.txt GOTO NOARCH

:COPIAR

REM Antes de hacer la copia hay que desproteger ambos archivos
ATTRIB -H -S -R C:\NTLDR
ATTRIB -H -S -R C:\NTDETECT.COM
 

COPY C:\NTLDR C:\SEGURIDAD /Y
COPY C:\NTDETECT.COM C:\SEGURIDAD /Y
 

REM  Una vez copiados hay que volver a protegerlos!!
ATTRIB +H +S +R C:\NTLDR
ATTRIB +H +S +R C:\NTDETECT.COM
GOTO MOSTRAR

:SIARCH
ECHO %date% - %time% - Archivos vitales respaldados >> c:\SEGURIDAD\LOG.txt
GOTO COPIAR

:NOARCH
ECHO ARCHIVO LOG DE ANOTACIONES > c:\SEGURIDAD\LOG.txt
IF ERRORLEVEL 0 ECHO Ok, Archivo LOG.txt creado.
IF ERRORLEVEL 1 GOTO ERROR2
ECHO ************************** >> c:\SEGURIDAD\LOG.txt
ECHO %date% - %time% - Archivos vitales respaldados >> c:\SEGURIDAD\LOG.txt
GOTO COPIAR


:MOSTRAR
ECHO Mostrando el archivo LOG.txt
TYPE c:\SEGURIDAD\LOG.txt
ECHO ****************************
DIR C:\SEGURIDAD
PAUSE
GOTO FIN

:ERROR1
ECHO Error al crear la carpeta SEGURIDAD.
GOTO FIN

:ERROR2
ECHO Error al crear el archivo LOG.txt

:FIN
ECHO Fin del programa.
PAUSE > NUL
EXIT 0