Script de salvas de logs en servidor proxy

Lenguajes interpretados o de script, IDEs de desarrollo...

Moderadores: frank, dxfiles

Responder
Metal
Mensajes: 32
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Python
Contactar:

Script de salvas de logs en servidor proxy

Mensaje por Metal » Lun, 03 Ene 2011, 12:04

Esta es una versión libre del script de Gaara. Pueden criticar sin piedad(así aprendo).

Código: Seleccionar todo

#! /usr/bin/python
from datetime import datetime
import shutil,subprocess, os, smtplib, gzip, tarfile
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

now = str(datetime.now())
data = {'SERVER_DIR'    :'/home/backups/Servers/Virtue',
        'WORK_DIR'      :'/home/backups/Servers/Virtue/'+now+'.logs/',
        'WORK_CREATE'   :'/home/backups/Servers/Virtue/'+now+'.logs/1',
        'ADMINS'        :('kzkggaara@ipichcb.rimed.cu', 'elav@ipichcb.rimed.cu'),
        'SMTP_SERVER'   :'smtp.ipichcb.rimed.cu'}

def enviar_email(para, subject, texto, smtp_server):
    COMMASPACE = ', '
    text = MIMEText(texto)
    msg = MIMEMultipart()
    msg['Subject'] = subject
    msg['From'] = 'error@server'
    msg['To'] = COMMASPACE.join(para)
    msg.attach(text)
    s = smtplib.SMTP(smtp_server)
    s.sendmail('error@server', para, msg.as_string())
    s.quit()

def copiar_archivo(desde, hasta, subject, mensaje_error, data, scp = False):
    try:
        if scp:
            os.system("scp "+desde+' '+hasta)
        else:
            shutil.copy(desde, hasta)
    except IOError as (errno, strerror):
        mensaje_error = mensaje_error + '\nI/O error({0}): {1}'.format(errno, strerror)+'\n '+desde+'->'+hasta+'\n El error ocurrio ' + now
        enviar_email(data['ADMINS'], subject, mensaje_error, data['SMTP_SERVER'])
        return False
    return True

def comprimir_dir(directorio, subject, mensaje_error, data):
    try:
        tar = tarfile.open(now+'.logs.tar', 'w')
        tar.add(directorio)
        tar.close()
    except IOError as (errno, strerror):
        mensaje_error = mensaje_error + '\nI/O error({0}): {1}'.format(errno, strerror)+'\n El error ocurrio ' + now
        enviar_email(data['ADMINS'], subject, mensaje_error, data['SMTP_SERVER'])
        return False
    f_in = open(now+'.logs.tar', 'rb')
    f_out = gzip.open(now+'.logs.tar.gz', 'wb')
    f_out.writelines(f_in)
    f_out.close()
    f_in.close()
    return True

def principal():
    if not os.path.exists(data['WORK_CREATE']):
        os.mkdir(data['WORK_CREATE'])
    os.execlp('/etc/init.d/squid','', 'stop')

    mensaje_error = 'La salva de logs del servidor Virtue ha dado ERROR, se adjunta log. '
    subject = '[Virtue] | [ERROR] Status de salva de logs.'
    flag = copiar_archivo('/var/log/squid/access.*', data['WORK_DIR'], subject, mensaje_error, data)
    if not flag:
        return

    flag = copiar_archivo('/var/log/auth.*', subject, data['WORK_DIR'], mensaje_error, data)
    if not flag:
        return

    os.remove('/var/log/squid/access.*')
    os.remove('/var/log/auth.*')
    os.execlp('/etc/init.d/squid','', 'start')
    open('/var/log/auth.log', 'w')
    os.lchown('/var/log/auth.log', 'adm', 'adm')
    os.chmod('/var/log/auth.log', 640)
    os.chdir(data['SERVER_DIR'])

    mensaje_error1 = 'La salva de logs del servidor Virtue ha dado ERROR. Especificamente a la hora de COMPRIMIR el directorio, se adjunta log. '
    flag = comprimir_dir(data['WORK_DIR'], subject, mensaje_error1, data)
    if not flag:
        return

    os.remove(data['WORK_DIR'])
    
    flag = copiar_archivo(data['SERVER_DIR']+now+'.logs.tar.gz', 'root@192.168.200.4:/home/backups/Servers/Virtue/', subject, mensaje_error, data, True)
    if not flag:
        return

    subject1 = '[Virtue] | [OK] Status de salva de logs.'
    mensaje_error2 = 'La salva de logs del servidor Virtue (192.168.200.3) se ha efectuado satisfactoriamente. \n'+now
    enviar_email(data['ADMINS'], subject1, mensaje_error2, data['SMTP_SERVER'])

if __name__ == '__main__':
    principal()
Axioma de Espinosa
Si funciona, no lo toque.

Avatar de Usuario
KZKG^Gaara
Mensajes: 463
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /dev/kzkggaara
Contactar:

Re: Script de salvas de logs en servidor proxy

Mensaje por KZKG^Gaara » Lun, 03 Ene 2011, 14:25

Qué tal socio.
Oye una duda, qué ventajas tiene este en Python sobre el otro en Bash?

Saludos y gracias por el trabajo bro ;)
~~» KZKG^Gaara «~~
Usuario #518082 de GNU/Linux
Windows ha detectado que no tiene teclado... presione [F9] para continuar.

Metal
Mensajes: 32
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Python
Contactar:

Re: Script de salvas de logs en servidor proxy

Mensaje por Metal » Lun, 03 Ene 2011, 14:48

Ventajas ninguna, solo lo hice para los novatos en python y sobre todo si a alguien se le ocurre mejoras q las comente aquí. Todo el crédito es tuyo q fue al q se le ocurrió, yo solo me limite a traducirlo :lol: , también q no me gusta el bash y si el python.

Cambios:
Obvie la creación de body.txt los adjunte directo al mensaje sin crearlos.
Obvio también los logs $LOG_FILE los adjunto también directo al correo.
Utilizo un servidor de smtp para enviar los correos.
Axioma de Espinosa
Si funciona, no lo toque.

Avatar de Usuario
KZKG^Gaara
Mensajes: 463
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /dev/kzkggaara
Contactar:

Re: Script de salvas de logs en servidor proxy

Mensaje por KZKG^Gaara » Lun, 03 Ene 2011, 15:15

Metal escribió:Ventajas ninguna, solo lo hice para los novatos en python y sobre todo si a alguien se le ocurre mejoras q las comente aquí. Todo el crédito es tuyo q fue al q se le ocurrió, yo solo me limite a traducirlo :lol: , también q no me gusta el bash y si el python.

Cambios:
Obvie la creación de body.txt los adjunte directo al mensaje sin crearlos.
Obvio también los logs $LOG_FILE los adjunto también directo al correo.
Utilizo un servidor de smtp para enviar los correos.
jaja no men, no lo decía por eso, solo que me preguntaba por las ventajas, pero ya me las dices tú mismo.
No necesitas los logs aparte, ni el body.txt, estos se puede decir que son parches, chapuzas que tuve que hacer para que toda la información me llegase bien jeje, pero con tu script ya no hacen falta ;)
Estas son mejoras ^_^ men jeje.

Saludos y me lo quedo.
Ah un detalle, para hacerlo funcionar qué hace falta? Python instalado algo bastante obvio jaja, qué más haría falta??
Y ejecutarlo es lo mismo no? ./script.py no?
~~» KZKG^Gaara «~~
Usuario #518082 de GNU/Linux
Windows ha detectado que no tiene teclado... presione [F9] para continuar.

Metal
Mensajes: 32
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Python
Contactar:

Re: Script de salvas de logs en servidor proxy

Mensaje por Metal » Lun, 03 Ene 2011, 15:20

Si, así debe funcionar. Cualquier problema q te de lo pones aquí y entre todos lo arreglamos. No creo q este perfecto y si al final necesitas otras modificaciones igual las implementamos.

Algo no me gusto de lo q hice y es q el scp pide contraseña, como resuelves eso?? La única solución q encontré era con certificados digital
Axioma de Espinosa
Si funciona, no lo toque.

Avatar de Usuario
KZKG^Gaara
Mensajes: 463
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /dev/kzkggaara
Contactar:

Re: Script de salvas de logs en servidor proxy

Mensaje por KZKG^Gaara » Lun, 03 Ene 2011, 15:30

Metal escribió:Si, así debe funcionar. Cualquier problema q te de lo pones aquí y entre todos lo arreglamos. No creo q este perfecto y si al final necesitas otras modificaciones igual las implementamos.

Algo no me gusto de lo q hice y es q el scp pide contraseña, como resuelves eso?? La única solución q encontré era con certificados digital
Configuro los servers para que se conozcan entre ellos (esto suena a cita LOL!!!)
O sea, Virtue en este caso es el que hace la salva, Freedom es el servidor central donde se almacenan las salvas no?
Le digo a Freedom que genere una llave pública, luego Virtue es el que la usa para conectarse sin necesidad de autentificación a Freedom.
No encontré otra forma de pasar archivos encriptados con SSH sin tener que escribir yo mismo el password, si conoces algún otro método me dices.

Saludos
~~» KZKG^Gaara «~~
Usuario #518082 de GNU/Linux
Windows ha detectado que no tiene teclado... presione [F9] para continuar.

Avatar de Usuario
linvix
Mensajes: 11
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Cuba
Contactar:

Re: Script de salvas de logs en servidor proxy

Mensaje por linvix » Mar, 04 Ene 2011, 08:00

Hola Metal

Te invito a que subas este scripts a snippets de c'odigo que hemos creado en Linux Pinar

La url de acceso es http://www.pri.jovenclub.cu/jc/linux/snippets/
para crear un nuevo snippets: http://www.pri.jovenclub.cu/jc/linux/snippets/add/

salu2

Metal
Mensajes: 32
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: Python
Contactar:

Re: Script de salvas de logs en servidor proxy

Mensaje por Metal » Vie, 07 Ene 2011, 08:53

Gaara probaste el script de python??
Axioma de Espinosa
Si funciona, no lo toque.

Avatar de Usuario
KZKG^Gaara
Mensajes: 463
Registrado: Sab, 07 Ago 2010, 14:09
Ubicación: /dev/kzkggaara
Contactar:

Re: Script de salvas de logs en servidor proxy

Mensaje por KZKG^Gaara » Vie, 07 Ene 2011, 10:39

Metal escribió:Gaara probaste el script de python??
Nop, no lo he probado aún, he estado haciendo varias cosas.
~~» KZKG^Gaara «~~
Usuario #518082 de GNU/Linux
Windows ha detectado que no tiene teclado... presione [F9] para continuar.

Responder