Trabajar con MySQL desde Python

Para acceder a bases de datos MySQL con Python, tenemos que instalar un módulo adicional. Siempre que tengo que montar una instalación en Mac OS X se me olvida el nombre del paquete. El módulo en cuestión es: MySQLdb

Se puede instalar con easy_install, tal que así:

sudo easy_install MySQL-python

Durante la instalación, busca el programa mysql_config, esta utilidad viene con MySQL, en mi caso tengo instalado MySQL con MacPorts, así que tenemos que asegurarnos que en nuestro PATH tengamos accesible la ruta de los ejecutables de mysql.

En mi caso, modifiqué el archivo .profile añadiendo la siguiente linea:

export PATH=$PATH:/opt/local/lib/mysql5/bin:

Y listo!

Apagado automático en Ubuntu 9.10

Seguimos con el serial de Ubuntu. Después de instalarlo en mi servidor, me pasaba lo de siempre, al hacer un halt se cerraba el sistema pero no se apagaba automáticamente el pc, siendo necesario apretar el botón del power, trivial pero molesto.

Con Debian 5.0 ya me pasaba lo mismo, y se solucionaba añadiendo «acpi=force» en el menú de arranque del grub, el problema es que Ubuntu 9.10 viene con Grub2 y le han pegado un meneo a los archivos de configuración que no hay quien se aclare.

Por suerte, con la ayuda de Google la comunidad siempre tiene la respuesta, al final es sencillo:

Editamos el archivo /etc/default/grub:

sudo nano /etc/default/grub

Y añadimos lo que nos interesa en la linea:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

La cambiamos para forzar ACPI

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi=force"

Una vez guardado el archivo, hay que actualizar Grub con la nueva configuración:

sudo update-grub

Listo, tras el primer arranque después de cambiar esto, el sistema ya se apaga solito, adios al botón Power 😉

Bloqueando IPs maliciosas con Denyhost

Siguiendo con la puesta a punto de mi servidor Ubuntu casero, una de las primeras cosillas que siempre me gusta instalar es DenyHosts.

sudo apt-get install denyhosts

DenyHosts es un script que monitoriza el log de accesos al sistema a través de SSH y bloquea las IPs que han superado un cierto número de intentos.

¿Para que sirve esto?
Pues es muy sencillo, dejad un servidor conectado a Internet con un puerto SSH abierto, y veréis lo rápido que es blanco de ataques de fuerza bruta. Con DenyHosts, ponemos límite a estos ataques. Simple pero efectivo.

Asignar IP estática en Ubuntu 9.10

Últimamente estoy jugando con un Ubuntu 9.10 Server, una de las primeras tareas que hice después de instalarlo, fue asignar una dirección IP fija al servidor.

Es tan fácil como:


sudo nano /etc/network/interfaces

Veremos algo parecido a esto:

editando /etc/network/interfaces

Vamos a la linea que dice:

iface eth0 inet dhcp

Y la cambiamos por esto:

iface eth0 inet static
address 192.168.2.20
netmask 255.255.255.0
gateway 192.168.2.1

Evidentemente, los valores de address, netmask y gateway dependerán de la configuración de la red donde se encuentre el servidor.

Una vez editado el archivo, aplicamos la nueva configuración con:

sudo /etc/init.d/networking restart

Más información aquí

error while loading shared libraries

Este error me aparecía después de compilar e instalar (correctamente) Gearman en un Ubuntu Server 9.10.

Tanto el proceso de compilación como el de instalación habían ido bien, el problema lo tenía cuando intentaba ejecutar el binario recien instalado, me aparecía el siguiente error:

gearmand: error while loading shared libraries: libgearman-server.so.0: cannot open shared object file: No such file or directory

El problema era claro, el sistema no sabía como encontrar las librerias compartidas necesarias, así que buscando por Google, encontre la solución:

sudo /sbin/ldconfig -v

Este comando actualiza la caché y las rutas donde ld busca las librerias, volví a probar y tema solucionado.

Instalar paquetes en Python

Llevo muy poco tiempo aprendiendo, y utilizando Python, hasta el momento todo son buenas vibraciones. Una de las primeras cosas con las que me tropecé fue con la necesidad de instalar paquetes o módulos, que no vienen en la instalación estándar, y que son utilizados por algunos scripts.

Un ejemplo práctico:

Quería probar un filtro para logs de Apache llamado loghetti, según explican en la página del proyecto, a partir de la información del log de Apache en formato combined, permite extraer información de una forma rápida y sencilla.
Pues bien, este script depende del módulo CommandLineApp para su funcionamiento, así que toca instalarlo.

¿Cómo lo hacemos?

Muy fácil, nos vamos al repositorio oficial de paquetes para Python, PyPI (Python Package Index), y buscamos el paquete en cuestión, en este caso CommandLineApp, tenemos suerte y nos aparece su ficha descriptiva. Nos vamos a su página de descarga y lo bajamos a nuestro Mac 😉

Por costumbre todos los paquetes los tengo recopilados en un directorio src, así que coloco el archivo CommandLineApp-3.0.5.tar.gz en mi directorio src, abro un Terminal, y realizo las siguientes acciones:

tar xzvf CommandLineApp-3.0.5.tar.gz
cd CommandLineApp-3.0.5
sudo python setup.py install

Listo!, ya puedo utilizar loghetti.

Instalar Python 2.6 en Mac OS X Leopard

En Mac OS X Leopard tenemos disponible por defecto la versión 2.5 de Python, las últimas (en el momento de escribir esto) versiones estables de Python son la 2.6.2 y la 3.1.1

En mi caso me interesaba tener instalada la versión 2.6 así que el proceso fue tan simple como ir a la web de Python y bajarme el instalador para Mac

Para instalar es tan sencillo como montar la imágen de disco y lanzar el instalador:

Captura del instalador de Python

El propio instalar modificar el PATH para que desde el Terminal utilicemos la nueva versión por defecto, así que si abrimos un terminal y lanzamos el intérprete lo que veremos se debería parecer a esto:

Intérprete Python

Recursos para aprender Python

Hace poco decidí ampliar mis conocimientos, hay que mantenerse en forma :), y ponerme a aprender un nuevo lenguaje de programación, después de un breve repaso por la web, me decidí por Python.

Otro día explicaré mis motivos, de momento, aquí dejo una lista de los recursos que encontré en la web que me están siendo de ayuda:

Cuando coja un poco de soltura con el lenguaje, me dedicaré a ver que frameworks MVC para la web tienen mejor pinta.

SPAM telefónico

Tengo dos lineas de móvil: personal y de empresa, en la última semana he recibido llamadas perdidas, en ambas líneas, marcan un toco y cuelgan.

Las llamadas provenían de números 905, concretamente 905 030 011 y 905 030 012.

Como la cosa ya me olía a chamusquina, he buscado estos números en Google y me encuentro con este post donde ya avisan que se trata del típico timo de dejarte una llamada perdida en el móvil y cuando vas a devolverla al tratarse de un 905 te sale el minuto a más de 1 euro, con lo que los «listos» que te han dejado la perdida se embolsan su correspondiente parte.

La verdad no sé como es posible que con los tiempos que corren se permita este tipo de prácticas, así nos va…