Enviar por correo el resultado de la copia de seguridad Informix desde MS-Windows

Con este procedimiento se realizará el envío por correo electrónico del resultado de la copia de seguridad de Informix. Aunque se establecen los conceptos básicos para realizar cualquier tareas y/o envíos de resultados a cualquier maquinas mediante comandos telnet desde equipos MS-Windows.



Consideraciones previas y entorno
  • La base de datos Informix reside en un sistema operativo Unix (Solaris).
  • Se debe poder tener acceso a la máquina vía Telnet.
  • Se debe programar la copia de seguridad en la base de datos Informix.
  • Se necesita crear un script en Unix para leer el log de la copia de seguridad. Este script se llamará en este ejemplo vercopia.sh y su contenido está detallado al final de esta entrada.
  • Se debe crear una tarea programada que ejecute el script vercopia.sh mediante crontab.
  • Es recomendable usar un usuario de acceso a Unix fuertemente restrictivo.
  • En cuanto a seguridad es más recomendable usar protocolo ssh sobre telnet.

Software necesario
TST es una herramienta de script que se conecta vía telnet a una maquina determinada y hace una serie de tareas especificadas en un archivo txt.
Blat permite enviar correos electrónicos desde la linea de comandos
Ambas herramientas son gratuitas, aunque siempre se puede hacer una donación para colaborar con el desarrollo y sustento futuro de estas y otras aplicaciones.


Procedimiento:

  1. Elegir un equipo MS-Windows que será el encargado de lanza la tarea.
  2. Crear una carpeta que contendrá todos los elementos. Por ejemplo C:\ScriptBackupInformix
  3. Crear los siguientes documentos:  
    • comandosTST.txt → archivo de comandos que ejecutará la aplicación TST.
    • enviaComandos.bat → script que lanza la aplicación TST.
    • resultado.txt → archivo de texto destino con el resultado del script vercopia.sh
    • notificaBackup.bat → script que lanza Blat para la notificación por correo.
    Dejar el ejecutable en TST en esta carpet.
  4. Crear dos tareas programadas de MS-Windows para la ejecución automática y programada primero del script enviaComandos (que ejecuta los comandos sobre Unix) y posteriormente el script notificaBackup (que envía correo con los resultados de enviaComandos).
Nota: Se crean dos scripts (enviaComandos y notificacionBackup) y dos tareas programadas para la futura reutilización  y fovorecer la granularidad del sistema de envío.

Contenido de los archivos.
  •  comandosTST.txt
maquinaUnix 23
SEND "nombreUsuario\m" 
SEND "contraseña\m"                      
SEND "vercopia.sh\m"                      
SEND "exit\m"                      
WAIT "·"

Explicación:
Conexión a la maquinaUnix ya sea por el nombre ó por la dirección IP mediante el puerto de acceso telnet (23).
Envía el nombre de usaurio y el caracter de control \m se traduce por un intro.
Envía la contraseña (Ojo! en texto plano)
Envia el comando vercopia.sh que ejecutará el script.
Sale de la sesión telnet

  • enviaComandos.bat
cd C:\ScriptBackupInformix
tst10.exe /r:comandosTST.txt /o:resultado.txt

Explicación:
Posicionarse en el directorio ScriptBackupInformix
Ejecutar TST con las opciones:
      /r  (read)    →  lectura de comandos a ejecutar en la conexión telnet.
      /o (output)  →  el resultado del script lo extrae en el archivo indicado.

  • notificaBackup.bat
blat -install mail.servidor.es remitente@gmail.com 2
blat  C:\ScriptBackupInformix\resultado.txt -subject "Backup Informix" -to destino@gmail.com -uuencode
Explicación:
Configura el servidor de correo que enviará el correo y el destinatario
Envia el archivo resultado.txt con el asunto Bacup Informix a la direcón destino indicada y en formato Unicode


  • vercopia.sh
# script para ver el log de la copia de seguridad
clear
echo "SALIDA DEL SCRIPT DE COPIA DE SEGURIDAD DE INFORMIX"
echo "-----------------------------------------------"
tail -30 /data/cseg/datos.log
echo
echo "REVISAR FECHA DEL FICHERO GENERADO POR LA COPIA"
echo "-----------------------------------------------"
ls -l /data/cseg/datos.log
echo
echo "ESTADO DE LA CINTA, REVISAR \"file no=\""
echo "-----------------------------------------------"
mt -f /dev/rmt/1n statusn status
echo
echo "Dbspaces con menos de 500 Mb libres"
echo "-----------------------------------"

dbaccess sysmaster - <<-EOF 2>/dev/null
select
dbs.name[1,20] dbspace, round(SUM(chk.chksize)*2/1024,2) MBtotal ,
round(SUM(chk.nfree)*2/1024,2) MBlibres,
round((SUM(chk.nfree)*100)/SUM(chk.chksize),2) pctDisponible
from sysdbspaces dbs, syschunks chk
where dbs.dbsnum=chk.dbsnum and is_sbchunk <> 1
group by dbs.name
having SUM(chk.nfree)*2/1024 < 500
UNION
select
dbs.name[1,20] dbspace, round(SUM(chk.udsize)*2/1024,2) MBtotal ,
round(SUM(chk.udfree)*2/1024,2) MBlibres,
round((SUM(chk.udfree)*100)/SUM(chk.udsize),2) pctDisponible
from sysdbspaces dbs, syschunks chk
where dbs.dbsnum=chk.dbsnum and is_sbchunk=1
group by dbs.name
having SUM(chk.udfree)*2/1024 < 500
order by 1;

select " logs sin copia de seguridad: "||
round(count(*),0)||"/"||(select count(*) from syslogs) logical
from syslogs
where is_backed_up = 0
and is_new = 0
and is_current = 0;

EOF

echo "Espacio libre en FS de logical logs"
echo "-----------------------------------"
df -h /informix60

No hay comentarios:

Publicar un comentario