Automatización - ReConquistando a la novia con Python + Cowsay + Fortune

2 comments
http://4.bp.blogspot.com/-yBOxDxixfRA/UQpq8IT-YUI/AAAAAAAAiCQ/JbLJoqrdQJw/s1600/gmailpythonsimple.jpg
Hace un rato un usuario de Underc0de pregunto como adjuntar un archivo obteniendo los datos del sistema previamente y que sea enviado por mediO de Python, asi que me puse a revisar un poco de la librería smtplib y con ella a jugar un poco, el código anda medio chanchito pero sirve para el cometido principal, tras lograr hacerlo funcional se me vino a la mente darle un uso diferente al script original, el cual sería un Python Mail Sender Love ;).

Ando romántico y porque no modificar un poquito y sacar provecho al script?

Lo primero que necesitamos es tener instalado cowsay y fortune a continuacion una pequeña muestra de cada uno, ya para instalarlos y demas todo es segun su distribución ;).

Un ejemplo de Cowsay  la variable -f (tux) nos permite mostar la forma del muñequito, si nos vamos a la terminal y realizamos el siguiente comando cowsay -l nos listara todos los bichitos, en vez de tux ponen el que les agrade.

[snifer@rizel]$ cowsay -l
Cow files in /usr/share/cows:
beavis.zen bong bud-frogs bunny cheese cower daemon default dragon
dragon-and-cow elephant elephant-in-snake eyes flaming-sheep ghostbusters
head-in hellokitty kiss kitty koala kosh luke-koala meow milk moofasa moose
mutilated ren satanic sheep skeleton small sodomized stegosaurus stimpy
supermilker surgery telebears three-eyes turkey turtle tux udder vader
vader-koala www


Ahora, tras lanzar hacemos la prueba con el texto a mostrar al final y tenemos lo siguiente:

$[snifer@rizel]$ cowsay -f tux "Romantico Snifer ;)"

 ______________________
< Romantico Snifer ;)  >
 ----------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/


Tras instalar fortune solo debemos de ir a la terminal e ingresar el comando fortune, que nos da una frase de manera aleatoria entre todas que tiene.


[snifer@rizel]$ fortune
"You should, without hesitation, pound your typewriter into a plowshare,
your paper into fertilizer, and enter agriculture"
  -- Business Professor, University of Georgia

Lo que nos permite hacer fortune es crear nuestras frases personalizadas, hace un tiempo jugue con fortune y el bashrc si mal no recuerdo pero creo que es mas de 2 años atras.

Se preguntan de donde saca las frases? el directorio es:

Arch y Derivados: /usr/share/fortune
Debian y Derivados: /usr/share/games/fortunes

Así que nos dirigimos al directorio y podemos lanzar un ls al directorio.

[snifer@rizel fortune]$ ls
off/             education      law.dat            news            rizel.dat
archlinux        education.dat  linux              news.dat        science
archlinux.dat    ethnic         linuxcookie        paradoxum       science.dat
art              ethnic.dat     linuxcookie.dat    paradoxum.dat   songs-poems
art.dat          food           linux.dat          people          songs-poems.dat
ascii-art        food.dat       literature         people.dat      sports
ascii-art.dat    fortunes       literature.dat     perl            sports.dat
computers        fortunes.dat   love               perl.dat        startrek
computers.dat    goedel         love.dat           pets            startrek.dat
cookie           goedel.dat     magic              pets.dat        translate-me
cookie.dat       humorists      magic.dat          platitudes      translate-me.dat
debian           humorists.dat  medicine           platitudes.dat  wisdom
debian.dat       kids           medicine.dat       politics        wisdom.dat
definitions      kids.dat       men-women          politics.dat    work
definitions.dat  knghtbrd       men-women.dat      riddles         work.dat
drugs            knghtbrd.dat   miscellaneous      riddles.dat     zippy
drugs.dat        law            miscellaneous.dat  rizel           zippy.dat

Podemos ver archivos con su dat respectivo entonces nosotros procedemos a crear uno nuevo, para ello tenemos que tener uno con la siguiente estructura.

Creando nuestras frases personalizadas para Fortune

Frase 1
       -- autor 
%
Frase 2

%
Visita SniferL4bs!

% 

Tras tener las frases en el archivo que deseemos en mi caso cree uno como rizel, así que hacemos uso de strfile.

strfile rizel rizel.dat


Tras ello ya tenemos lo necesario para usar en nuestro script.

Funcionamiento:
Envia un correo electrónico, a la señorita dueña de mi corazón con el archivo generado en temporal :), previamente creado con cowsay y fortune.

Necesitamos dos cuentas una nuestra  y otra de la novia, prometida chequeo, yo le envio a RizelTane ;). Y ahora el pequeño frankeinsteingther :3 muajajajjjaja.

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
#maillove.py
#Realizado por Jose Moruno Cadima a.k.a Snifer
# www.sniferl4bs.com

import smtplib
import mimetypes
import os
import sys

from email.MIMEMultipart import MIMEMultipart
from email.Encoders import encode_base64
from email.mime.text import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders 

gmail_to = 'xxxx@gmail.com' #Correo a enviar
gmail_from = 'xxxxxx@gmail.com' #Correo de donde se envia
password='*******' #Contraseña

os.system("rm /tmp/log")
#os.system("acpi -i | tee /tmp/log.txt")<
os.system("fortune rizel | cowsay -f kiss | tee /tmp/log")


msg = MIMEMultipart()
msg['From']= (gmail_from)
msg['To']= (gmail_to)
msg['Subject']="Subject"


file = open("/tmp/log.txt", "rb") #Direccion del Archivo
attach_file = MIMEBase('multipart', 'encrypted')
attach_file.set_payload(file.read())
file.close()

attach_file.add_header('Content-Disposition', 'attachment', filename='Una Frase al Día.txt')#NOMBRE DEL ARCHIVO A ENVIAR QUE SE VERA
msg.attach(attach_file)


mailServer = smtplib.SMTP('smtp.gmail.com',587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmail_from, password) 
mailServer.sendmail(gmail_from, gmail_to, msg.as_string())
mailServer.close()


El código por si solo se explica, ahora basta con meterlo en un cron y listo.. mensajes diarios!!!

Para ejecutarlo basta con ir a la terminal y python2 + script:

[snifer@rizel Desktop]$ python2 correoLove.py 
 _________________________________________ 
/ De ti estoy enamorado                   \
\ :) te quiero mucho             .        /
 ----------------------------------------- 
     \
      \
             ,;;;;;;;,
            ;;;;;;;;;;;,
           ;;;;;'_____;'
           ;;;(/))))|((\
           _;;((((((|))))
          / |_\\\\\\\\\\\\
     .--~(  \ ~))))))))))))
    /     \  `\-(((((((((((\\
    |    | `\   ) |\       /|)
     |    |  `. _/  \_____/ |
      |    , `\~            /
       |    \  \           /
      | `.   `\|          /
      |   ~-   `\        /
       \____~._/~ -_,   (\
        |-----|\   \    ';;
       |      | :;;;'     \
      |  /    |            |
      |       |            |



PD: Ya dije tiene falencias de código, no uso lo correcto por ahi deberia de haber un os.remove :$, pero ando flojo luego mejoro o alguien se anima mejor! ;), quizas es hasta codigo spaguetti como dice el gringo, pero esta funcional xD.

PD2: Debido a que en RadioHack me dijerón drogadicto :3 .. aqui esta el repositorio de GITHUB con las herramientas de SniferL4bs ;)
Regards,
Snifer

2 comentarios

  1. *-* Esta vez te ganaste un besito presencial y uno virtual :-*. Pase por mi casa señor snifer para cobrarlo :)

    ResponderEliminar
    Respuestas
    1. Ja ja ja ja! ahora si a dormir ya es 3:30 am :P

      Regards,
      Snifer

      Eliminar