Jorge Fuertes

Consultor de sistemas infomáticos.
Administración de sistemas, desarrollo.

HummingBoard: ¿Una Raspberry potenciada?

HummingBoardHummingBoard es una pequeña computadora tipo Raspberry Pi que, por algo más de dinero que esta, parece ser que va a darnos unas cuantas posibilidades más, muy interesantes si hacíamos corto con la Pi.

La CPU va en zócalo, así que en un futuro la podemos extraer y ampliar. En la configuración inicial nos va a dar un SoC (System on a Chip) con CPU Freescale i.MX6, que nos proporciona cuatro núcleos de Cortex-A9, GPU con aceleración 2D/3D, HDMI 1080p, Ethernet 1Gbps y Wifi/BT. ¡Suculento!

Las posibilidades de expansión también son muy interesantes gracias MIPI CSI/DSI, pero antes que eso 2 puertos USB 2.0 alimentados (los USB de la Pi son malísimos), y parece ser que hay un puerto eSata opcional, en el reverso de la placa encontraremos un mini PCI-E, un mSata y un bahía microSD.

En su wiki está la lista completa de características, la verdad es que es una belleza muy potente que rompe con todas las limitaciones que nos ponía la ingeniosa y maravillosa Pi.

En su tienda podéis ver las distintas opciones de compra. Básicamente dos modelos, uno con 512Mb de RAM y otro con 1Gb.

El vídeo de presentación:

Y un vídeo comparativo con la Pi:

Mi primer programa en Go

300px-Ken_n_dennis

Me he decidido a probar esta cosa del “Go”, o “go-lang” de Google, al ver en la Wikipedia que uno de los que diseñaron el lenguaje es Ken Thompson.

El nombre es desafortunado, resulta difícil encontrar recursos en Internet al ser demasiado genérico, pero bueno, si vamos buscando por “golang” y “go-lang” la cosa mejora un poco.

He hecho un pequeño servidor concurrente que, cuando nos conectamos admite dos comandos: ping y end. Al primero responde con pong y al segundo con una despedida y una desconexión.

Hasta ahí nada impresionante, aunque lo bueno empieza cuando vemos el código, menos de sesenta líneas y porque lo he adornado pillando el hostname para probar más cosas, y, aquí lo bueno de verdad, es plenamente concurrente, podemos abrirle todas las conexiones que queramos que el tío va lanzando procesos internos hasta que se quemen los recursos (evidentemente habría que establecer límites y controles en un servidor de verdad).

Sin más os dejo el código por si tenéis curiosidad:

Inmutable: Ficheros que no se pueden borrar con rm

Si no te ha pasado te pasará:

$> rm fichero.tal
rm: cannot remove `fichero.tal': Operation not permitted

Es posible que el maldito tenga activado el atributo ‘inmutable’, la solución:

$> chattr -i fichero.tal
$> rm fichero.tal

Nunca más se supo de tal fichero. Pensé en dejar unos bytes, para que difundieran la palabra.

Backups de MySQL con Bash

Estos días he tenido que hacer un script en bash para realizar backups de MySQL todos los días, guardando los últimos quince. Lo más sencillo era hacer este guión para ponerlo en el crontab y que se ejecutase a diario por la noche.

El script obtiene un listado de las bases de datos presentes en el MySQL local, crea un directorio dentro del que se le haya configurado, con nombre del día y la hora actuales, y dentro de él vuelca una por una estas bases de datos, comprimidas con gzip.

Después borra los backups viejos hasta dejar solamente los quince más nuevos.

Por supuesto el script se puede ejecutar a mano para producir un backup en el momento que deseemos, sólo hay que tener en cuenta que esos backups van a contar entre los quince últimos que son mantenidos.

Otra cosa importante es que el script tira de mi biblioteca de funciones de bash, que es una cosa que me facilita bastante la vida, sobre todo a la hora de darle un mejor aspecto a los scripts, pero es muy mejorable, como todo, y explicarla aquí se sale un poco del alcance del post, simplemente la adjunto porque la necesitáis. Está todo en este paquete backups-mysql-bash.tar.gz, pero en las instrucciones ya se descarga si las seguís paso a paso.

Instrucciones:

1: Instalar los scripts

Necesitáis tener instalado wget, si es Debian creo que viene por defecto, si no: apt-get install wget.


#> mkdir /root/bin
#> cd /root/bin
#> wget http://jorgefuertes.com/wp-content/uploads/2013/12/backups-mysql-bash.tar.gz
#> tar xvzf backups-mysql-bash.tar.gz

2: Configurar .my.cnf

Es interesante configurar este archivo para acceder sin más al servidor MySQL, en principio no es ningún problema de seguridad, pero si preferís no hacerlo deberéis modificar el script para que admita el usuario y la contraseña de vuestro mysql.

Editamos el archivo /root/.my.cnf (ojo al punto de delante del nombre) y escribimos en él:


[client]
host = localhost
user = root
password = mypassword

Evidentemente sustituyendo los datos con los que correspondan a nuestro servidor.
Ahora si ejecutamos mysql deberemos conectar con el servidor sin problemas.

Ajustamos los permisos de este fichero para que sean restrictivos y otros usuarios de la máquina no puedan usarlo o leerlo:


chmod 600 /root/.my.cnf

3: Probar el script

Si todo ha ido bien tiene que funcionar a la primera:


#> /root/bin/backup-mysql.sh

Lo podemos ejecutar varias veces y observar el resultado en /root/backup.

4: Añadirlo al crontab

Añadiremos una línea al crontab para conseguir que se ejecute todos los días a las 12 de la noche. El fichero de cron se edita con la orden crontab -e.


# m h  dom mon dow   command
0 0 * * * /root/bin/backup-mysql.sh

Bien, con esto ya debería estar resuelto. Fácil, estúpido y funcional, KISS, pero nos puede salvar el pescuezo en más de una ocasión.

SSH Dialog: Una utilidad de consola

Últimamente tengo que hacer más SSH que de costumbre, a mis propios servidores y a servidores de otras empresas, algunos de ellos ni siquiera tienen un nombre DNS y hay que entrar por la IP, otros tienen un nombre extraño asignado por Amazon y algunos, para rizar el rizo, están en puertos diferentes al 22 estándar. ¿Suficiente? NO, todavía hay más casos, en unos se entra con usuario ‘root’, en otros con ‘ubuntu’ y en otros con ‘admin’, demonios.

Sé que hay muchas formas de llevar esto organizado, sesiones del programa de consola que utilizamos, la configuración del propio cliente de SSH… pero no me gusta ir a un menú para seleccionar un host, y me gustaría tener una configuración clara en formato YAML y que pueda ser compartida entre mis máquinas con dropbox o similar.

Así que decidí darle al “my own way” y al “KISS” y me salió un programita en ruby que considero muy útil y de fácil utilización. No es que sea una cosa de tirar cohetes, pero si a mi me resulta tan útil, a alguien más le puede servir, así que lo he puesto en GitHub, con licencia libre, por si acaso:

Clonad, clonad, malditos.

Crear un disco RAM en GNU/Linux

Lo mismo que hicimos el otro día sobre OSX se puede hacer sobre GNU/Linux, por supuesto. De hecho la versatilidad actual de OSX viene dada porque en realidad es un UNIX, un derivado de FreeBSD más concretamente.

Bueno, al rollo:

#> mkfs -q /dev/ram1 32768
#> mkdir /mnt/ramDisk
#> mount /dev/ram1 /mnt/ramDisk

Con esto tendréis el disco RAM montado en ‘/mnt/ramDisk’, pero podéis montarlo en el ‘/tmp’, dentro de vuestro ‘home’ o incluso hacer que GNOME o KDE lo monten solos, etc…

Dependiendo de como esté organizada vuestra distro vais a necesitar ‘sudo’ para el mkfs, o cambiar a usuario ‘root’.

¡Saludos!