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í

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

Buscar y borrar los archivos encontrados

Otro comando útil, aunque este el peligroso.

Para cuando queramos buscar archivos con una extensión o nombre concreto en una estructura de directorios y borrarlos:

ATENCIÓN QUE EL RM LO CARGA EL DIABLO!!

find . -name 'README.txt' | xargs rm

Este comando busca todos los archivos con el nombre README.txt y los borra.

Buscar una cadena de texto en múltiples archivos

A menudo queremos saber que archivos contienen una cadena de texto. Si queremos hacer esto desde la línea de comandos:

find . -name '*.php' | xargs grep 'cadenaabuscar' -l

Este comando busca todos los archivos con extensión ‘.php’ en el directorio actual y sus subdirectorios, pasa la salida a grep y éste nos muestra los nombres de los archivos que contienen la cadena buscada.

Esto funciona en Mac OS X y en cualquier sistema Unix.

Instalar PHP en Mac OS X Leopard

Leopard incluye PHP 5 de serie, sin embargo el servidor Apache que viene con el sistema no tiene el módulo de PHP activo.

Si no queremos complicarnos la vida y empezar ya a probar nuestros scripts en PHP, podemos habilitar el módulo de la siguiente forma.

Y para los que no se aclaren con el inglés:

  • Abrimos un terminal y ejecutamos:sudo nano /private/etc/apache2/httpd.conf (El sistema nos pedirá la contraseña del administrador)
  • Más o menos sobre la linea 114 encontraremos lo siguiente:
    # LoadModule php5_module libexec/apache2/libphp5.so

    Debemos descomentarla para habilitar el módulo, quedaría así:

    LoadModule php5_module libexec/apache2/libphp5.so

  • Guardamos el archivo y vamos al menú superior > Manzanita > Preferencias del sistema
  • Hacemos clic sobre Compartir
  • Y reiniciamos el servicio “Compartir Web” (desmarcando y marcando el checkbox)

Con esto ya tendríamos el módulo activo. Para probar que todo funciona ok, podemos ir a nuestro directorio Web, en nuestra carpeta personal, y crear un archivo test.php que contenga lo siguiente:


<?php
phpinfo();

Para probar la página, abrimos nuestro navegador favorito y vamos a la siguiente URL:
http://localhost/˜nombre_usuario/test.php

Deberíamos ver la página de información de PHP:

Captura de phpinfo()

Y con esto ya tenemos nuestro módulo activo.