lunes, junio 21, 2010

Envío de correos con python

Hola,
Se me ocurre que tal vez te interese automatizar un envío por correo automático.

Puede ser que tengas que enviar un mensaje a una lista de destinatarios variable, o símplemente quieras realizar algunas tareas a una hora concreta y enviar el resultado.
En http://win32com.goermezer.de/content/view/227/192/ tenéis el script para enviar un mensaje por medio del Outlook:


import win32com.client

def send_mail_via_com(text, subject, recipient, profilename="Outlook2003"):
s = win32com.client.Dispatch("Mapi.Session")
o = win32com.client.Dispatch("Outlook.Application")
s.Logon(profilename)

Msg = o.CreateItem(0)
Msg.To = recipient

Msg.CC = "moreaddresses here"
Msg.BCC = "address"

Msg.Subject = subject
Msg.Body = text

attachment1 = "Path to attachment no. 1"
attachment2 = "Path to attachment no. 2"
Msg.Attachments.Add(attachment1)
Msg.Attachments.Add(attachment2)

Msg.Send()

lunes, junio 14, 2010

Un magnífico editor, el vi de toda la vida.

El vi despierta odios y pasiones.

Yo lo suelo utilizar bastante aunque soy un desastre para recordar los comandos menos utilizados. En Linux, UNIX suele ser la mejor opción pues es el editor que no te va a faltar en ningún sitio.

Pero también lo utilizo en Windows como saco para todo. Que tengo que recordar algún nombre, pues al vi. Que me pasan una lista de teléfonos, al vi también. Para encriptar todo el saco la opción :X

Al abrir el fichero tendréis que indicar que lo queréis desencritar para que os pregunte por la clave: vi -x fichero

Realmente en Windows en lugar del vi utilizo vim (vi improved) que facilita mucho las cosas: en windows tenemos un menú con las opciones más habituales (copiar, pegar, abrir, cortar, etc.), funcionan bien las flechitas, el retroceso,...

No hace tanto había disponible un interesantísimo cuadro con los comandos del vi/vim. Te mostraba un teclado y en cada tecla el comando que se ejecuta. Lo creó la empresa de formación Planetalia con licencia Creative Commons.

Resulta que la persona que hizo el cuadro lo publicó en su web personal, y la wikipedia añadió el enlace a ese sitio como "Cuadro imprimible con todos los comandos vi".

Hoy es el día en el que el cuadro imprimible no está en ningún sitio. La wikipedia sigue con el enlace hacia la nada y en la empresa creadora no hay ni rastro del cuadro.


Actualización:

De todas formas Nemo ha puesto un enlace en la sección de comentarios al original inglés.

Mañana escanearé el que imprimí en su día y lo pondré aquí mismo. También enviaré un mail a Planetalia para que lo sepan, y para agradecer el trabajo realizado. Claro está, si Planetalia lo vuelve a publicar, aquí pondré el enlace al sitio.


Otra actualización:


Ya he enviado el mail a Planetalia, pero sin respuesta. Aquí va la imagen escaneada:




Por cierto, que acabo de ver el partido del siglo.

Baloncesto, tercer partido de la final ACB. Realmente ha sido de infarto.

El barcelona perdiendo de 5, va y remonta. Fuerza la prórroga. Luego el Baskonia va perdiendo de 5. Se pone perdiendo de 2 en los segundo finales. San Emeterio se mete bajo la canasta. Encesta y le hacen personal. El final de la liga en juego en un tiro libre. Va San Emeterio y consigue el título por un puntito. (Bueno, en cuanto a partidos ha sido un 3-0 por lo que está claro que ha sido un justo ganador).

Baskonia txapeldun.

La web del Barcelona ha sido el primero en actualizarse:


Saludos.

jueves, junio 10, 2010

Siguiendo con el traceo de sesión en Oracle...

Antes de activar el audit de sesión deberíamos comprobar si la base de datos ya está auditando o no.

Miramos en los parámetros de la base de datos qué valor tiene audit_trail y listo.

select name, value from v$parameter
where name like 'audit_trail';

Nosotros ayer lo pusimos a "DB" que activa la auditoría y almacena las trazas en la tabla SYS.AUD$.

Antes de esa asignación me imagino que tendría el valor "none". Le daremos este valor para desactivar la auditoría.

Otros posibles valores:

"OS": Las trazas se almacenan en el sistema operativo en lugar de en Oracle.
"XML": Se almacenan en ficheros XML en el sistema operativo.

Por último, si ponemos db, extended
o xml, extended conseguiremos datos adicionales en las columnas SQLBIND y SQLTEXT.

Saludos.

miércoles, junio 09, 2010

Traceo de sesión en Oracle

Las legislaciones de protección de datos de la mayoría de países además de exigir un control de accesos, suelen requerir auditar los accesos.

Es especialmente importante revisar los intentos de acceso rechazados por el sistema, ya que puede estar intentando acceder una persona no autorizada.

Para activar el audit hacemos:

SQL> alter system set audit_trail = 'DB' scope=spfile;

Nota: DB se encuentra entre comillas simples. Lo digo por si desaparecen.

Ahora tenemos varias opciones:

Auditar los intentos de sesión rechazados:

SQL> audit session whenever not successful;

Auditar sólo las sesiones con éxito:

SQL> audit session whenever successful;

Auditar todas las sesiones (los intentos y los que tienen éxito).

SQL> audit session;

Después de activar el audit sólo queda ver los resultados.
Para ello abrimos sesión con el usuario SYS y estudiamos la tabla sys.aud$

Mañana estudiaremos las columnas de esa tabla y prepararemos alguna consulta predefinida de forma que podamos obtener un informe periódico.

Os adelanto para el que tenga seguridad que se quedan registrados datos como:

1.-La fecha y hora de inicio de sesión y de final (realmente se graba un registro al abrir sesión y otro al cerrarlo).
2.-El usuario del sistema operativo que accede.
3.-El usuario Oracle al que accede.
4.-El identificador de sesión (es un correlativo que mantiene Oracle).
5.-El nombre de la máquina desde la cual se accede.
6.-La acción realizada (abrir, cerrar, cerrado de Oracle).
7.-El número de error Oracle devuelto (número cero si la sesión se ha abierto correctamente).
8.-Etc. Etc.

Saludos.