Desarrollando aplicaciones web con python y bottle

Ya sabéis que me gusta mucho el lenguaje python. Muchos de mis ejemplos y algunas aplicaciones simples no merecen el uso de un framework tan grande como pueda ser django. Para estos casos me encantan los microframeworks, y aunque hay varias alternativas disponibles, me gusta especialmente un microframework llamado bottle …

Seguir leyendo

Problemas de log con docker y python

El otro día estaba haciendo un script de python que debía ejecutarse en un contenedor docker. A pesar de la cantidad de verbose que le puse, no era capaz de ver ningún texto cuando miraba los logs. Tras mucha búsqueda, finalmente encontré el culpable en la variable de entorno PYTHONUNBUFFERED …

Seguir leyendo

Escribiendo un servidor DNS en python con twisted

El otro día tuvimos una caída del centro de datos de desarrollo. Inmediatamente después vimos que teníamos afectación en el entorno de producción, ya que lanzaba peticiones al DNS de desarrollo. Sin saber claramente porque pasaba, hice un servidor DNS en python, para ver que tipos de peticiones se lanzaban …

Seguir leyendo

Un escáner SSL con sslyze

El otro día cayó en mis manos un escaneo de la plataforma para uno de los servicios que gestiono. No voy a dar detalles al respecto en virtud del acuerdo de confidencialidad que mantengo con ellos, pero consideré interesante una de las herramientas que usaron para testear el dominio SSL …

Seguir leyendo

Usando SSH en nuestros scripts python mediante paramiko

Es muy útil lanzar comandos SSH desde un script de bash. Sin embargo, los scripts en bash se vuelve ilegibles rápidamente, y no nos ofrece el poderío de la librería python. No es de extrañar que herramientas como ansible o fabric estén escritas en python, usando una librería llamada paramiko …

Seguir leyendo

Python como una calculadora estadística

El otro día me encontraba en mi trabajo con otra petición muy especial: se necesitaba un check para Nagios que contara las apariciones de cierto tipo de errores en un fichero de log. Ese check debía saltar en función de cuán alejado estaba el valor de las últimas 100 muestras …

Seguir leyendo

Separando el build y el runtime con contenedores Docker

Cuando montamos un contenedor Docker para servir una aplicación cualquiera, solemos poner un montón de dependencias necesarias solamente para compilar el paquete o para empaquetar sus librerías. Esto supone un gasto innecesario en espacio y en tiempo de ejecución; usando contenedores desechables podemos agilizar este proceso de forma altamente considerable …

Seguir leyendo

Un servidor pypi local

Cuando trabajamos con python, muchas veces necesitamos instalar librerías con pip o easy_install. Dependiendo de la naturaleza de nuestros proyectos, las librerías suelen variar, pero siempre solemos utilizar los mismos. En estos casos puede ser útil tenerlos cerca, cacheados en un servidor en nuestra red local, para su rápido acceso …

Seguir leyendo

Generando passwords complejas con python

Todos hemos trabajado en empresas que tienen curiosas políticas de seguridad. La cosa es mas cierta en la generación de passwords, cuando te piden mayúsculas, minúsculas, dígitos y otros símbolos arcanos. Cuando los administradores tenemos que asignarlas a miles, ya no es divertido y tenemos que generarlas de forma automática …

Seguir leyendo

Escribiendo bots para Telegram

Aunque no está muy extendido, Telegram es un magnífico cliente de mensajería instantánea. Tiene varios puntos a favor, como por ejemplo seguridad, rapidez y su condición de libre. Lo que no se conoce tanto es que dispone de una API para crear bots que pueden responder automáticamente a sus usuarios …

Seguir leyendo