Como crear un log file

¿En qué podemos ayudarte?
< Regresar
Estás aquí:
Imprimir

Pasos

  1. Instalar librería.
  2. Agregar código al script.
  3. Agregar al log rotation.
  4. Agregar al cron
  5. Instalar mutt(opcional)

Instalar libreria

Crear libreria /usr/bin/librerialog.sh

# nano /usr/bin/librerialog.sh
#!/bin/bash

SCRIPT_LOG=/var/log/rsync/rsync-$LOGNAME-`date +%Y%m%d`.log
touch $SCRIPT_LOG

function SCRIPTENTRY () {
 timeAndDate=`date "+%b %d %H:%M:%S %Y"`
 script_name=`basename "$0"`
 script_name="${script_name%.*}"
# echo "[$timeAndDate] [DEBUG]  > $script_name $FUNCNAME" >> $SCRIPT_LOG
 echo "[$timeAndDate] [DEBUG]  > Iniciando $script_name script." >> $SCRIPT_LOG
}

function SCRIPTEXIT(){
 script_name=`basename "$0"`
 script_name="${script_name%.*}"
# echo "[$timeAndDate] [DEBUG]  < $script_name $FUNCNAME" >> $SCRIPT_LOG
 echo "[$timeAndDate] [DEBUG]  < Script $script_name terminado." >> $SCRIPT_LOG
}

function ENTRY(){
 local cfn="${FUNCNAME[1]}"
 timeAndDate=`date "+%b %d %H:%M:%S %Y"`
# echo "[$timeAndDate] [DEBUG]  > $cfn $FUNCNAME" >> $SCRIPT_LOG
 echo "[$timeAndDate] [DEBUG]  > Iniciando copia..." >> $SCRIPT_LOG
}

function EXIT(){
 local cfn="${FUNCNAME[1]}"
 timeAndDate=`date "+%b %d %H:%M:%S %Y"`
# echo "[$timeAndDate] [DEBUG]  < $cfn $FUNCNAME" >> $SCRIPT_LOG
 echo "[$timeAndDate] [DEBUG]  Copiado!!" >> $SCRIPT_LOG
}


function INFO(){
 local function_name="${FUNCNAME[1]}"
    local msg="$1"
    timeAndDate=`date "+%b %d %H:%M:%S %Y"`
    echo "[$timeAndDate] [INFO]  $msg" >> $SCRIPT_LOG
}


function DEBUG(){
 local function_name="${FUNCNAME[1]}"
    local msg="$1"
    timeAndDate=`date "+%b %d %H:%M:%S %Y"`
 echo "[$timeAndDate] [DEBUG]  $msg" >> $SCRIPT_LOG
}

function ERROR(){
 local function_name="${FUNCNAME[1]}"
    local msg="$1"
    timeAndDate=`date "+%b %d %H:%M:%S %Y"`
    echo "[$timeAndDate] [ERROR]  $msg" >> $SCRIPT_LOG
}

Agregar código al script

# nano script.sh

#!/bin/bash
#Se define el nombre del log a ser creado
export LOGFILENAME="script"
#Se importa la libreria de log
source /usr/bin/librerialog.sh
SCRIPTENTRY
updateUserDetails(){
#    ENTRY
#    DEBUG "Argumento: $1, Argumento2: $2"
     INFO "$1"
     EXIT
}
stepOK(){
if [ "${?}" -ne "0"  ]
	then
    		ERROR "El Script fallo"
    		exit 1
fi
}       
exec > >(while read -r line; do printf '%s %s\n' "$line"; updateUserDetails "$line"; done;) 2>&1 22>&2 21>&1
#Meter comandos de script abajo de esta linea
cat uno.txt 
stepOK "$?"
sleep 1
SCRIPTEXIT
exit 0

Crear el log rotation

# nano /etc/logrotate.d/data_bintec

/var/log/rsync/rsync-script-*.log {

    weekly
    rotate 4
    compress
    delaycompress
    missingok
    postrotate
        find /var/log/rsync/ -type f -name *.log -mtime +10 -exec rm {} \;
    endscript
}

Agregar al cron

#crontab -e

0 15,23 * * * /root/scripts/data_bintec_to_mxserver6.sh | mutt -s "Respaldo data.bintec.com.mx" helpdesk@bintec.com.mx < /var/log/rsync/rsync-data_bi

Este ejemplo agenda la ejecución del script todos los dias, a las 15 y 23 hrs y envia correo con el log adjunto.

Instalación Mutt

Mutt permite enviar correos mediante linea de comando, de esta manera se puede mandar un mail por cron

CENTOS

# yum install mutt

UBUNTU

# sudo apt-get install mutt

# mkdir -p ~/.mutt/cache/headers

# mkdir -p ~/.mutt/cache/bodies

# touch ~/.mutt/certificates

Create mutt configuration file muttrc

# touch ~/.mutt/muttrc

# nano ~/.mutt/muttrc

set realname = "Bintec HelpDesk"
set from = "user@mail.com.mx"
set use_from = yes
set envelope_from = yes
set smtp_url = "smtps://user@mail.com.mx@smtp.com.mx:465/"
set smtp_pass = "password"
set imap_user = "user@mail.com.mx"
set imap_pass = "password"
set folder = "imaps://imapserver.com.mx:993"
set spoolfile = "+INBOX"
set ssl_force_tls = yes

Know Issues

CENTOS

Se debe instalar la libreria cyrus-sasl-plain si se va a conectar a un servidor de correo que use autenticacion, esto lo podemos ver si el error que arroja mutt es: No authenticators available” #yum install -y cyrus-sasl-plain
Table of Contents

Deja un comentario