Formato vertical de salida en MySQL

A veces, especialmente en tablas con mucho campos, la salida horizontal (por defecto) puede ocupar demasiado espacio y ser difícil de seguir. Esto se puede agravar más sin pretendemos pegar los resultados en un e-mail, por ejemplo.

Utilizando \G en lugar de ; para terminar la query, conseguiremos que la salida se muestre con formato vertical.

Ejemplo de Formato horizontal:

mysql> SELECT * FROM table;

MySQL_horizontal

Ejemplo de Formato vertical:

mysql> SELECT * FROM table \G

MySQL_vertical

También se puede iniciar el cliente de MySQL con la opción –vertical y que afectaría a todas las consultas.

Resetear password de root en MySQL

Esto a mí me ha venido bien en algún momento, y es que no siempre recordamos o sabemos la password de root la BBDD.

En MySQL se puede resetear así:

1. Reiniciar la base de datos con la opción –skip-grant-tables:

# /etc/init.d/mysqld restart --skip-grant-tables

2. Conectarte a la BBDD con usuario root:

# mysql -u root

3. Establecer la nueva password:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
mysql> FLUSH PRIVILEGES;

4. Volver a arrancar la BBDD sin –skip-grant-tables:

# /etc/init.d/mysqld restart

Heartbeats de VRRP

Post técnico de la semana.

Me he encontrado con una duda sobre cómo averiguar qué VRRPs IDs están anunciándose en una red. Esto es relativamente importante controlarlo porque si en un momento dado añades un nuevo equipo que anuncie un VRRP ya usado, se puede liar gorda.

Si tienes acceso root a una máquina que esté pinchada en esa red, puedes utilizar tcpdump para descubrir los anuncios de VRRP.

Existen 3 formas que nos devuelven el mismo resultado:

tcpdump -i <interface> host 224.0.0.18
tcpdump -i <interface> proto 112
tcpdump -i <interface> ether dst 01:00:5e:00:00:12

Donde «<>» es la interfaz de red en la que quieres chequear, «host 224.0.0.18» es el host destino del tráfico VRRP, «proto 112» es el protocolo VRRP y la MAC «01:00:5e:00:00:12» en la dirección MAC de broadcast de VRRP.

Ejemplo:

[root@host53n01:~]# tcpdump -i eth4 -i eth5 proto 112
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth5, link-type EN10MB (Ethernet), capture size 96 bytes
10:42:21.099775 IP 10.203.12.132 > 224.0.0.18: VRRPv2, Advertisement, vrid 70, prio 150, authtype none, intvl 1s, length 20
10:42:21.114600 IP 10.203.12.130 > 224.0.0.18: VRRPv2, Advertisement, vrid 202, prio 150, authtype none, intvl 1s, length 20
10:42:21.514168 IP 10.203.12.137 > 224.0.0.18: VRRPv3, Advertisement
10:42:21.514169 IP 10.203.12.137 > 224.0.0.18: VRRPv2, Advertisement, vrid 50, prio 255, authtype none, intvl 1s, length 20
10:42:21.891698 IP 10.203.12.132 > 224.0.0.18: VRRPv2, Advertisement, vrid 70, prio 150, authtype none, intvl 1s, length 20
10:42:22.114708 IP 10.203.12.130 > 224.0.0.18: VRRPv2, Advertisement, vrid 202, prio 150, authtype none, intvl 1s, length 20
10:42:22.526551 IP 10.203.12.137 > 224.0.0.18: VRRPv3, Advertisement
10:42:22.526769 IP 10.203.12.137 > 224.0.0.18: VRRPv2, Advertisement, vrid 50, prio 255, authtype none, intvl 1s, length 20
10:42:22.820480 IP 10.203.12.132 > 224.0.0.18: VRRPv2, Advertisement, vrid 70, prio 150, authtype none, intvl 1s, length 20
10:42:23.114625 IP 10.203.12.130 > 224.0.0.18: VRRPv2, Advertisement, vrid 202, prio 150, authtype none, intvl 1s, length 20
10:42:23.513211 IP 10.203.12.137 > 224.0.0.18: VRRPv3, Advertisement
10:42:23.513213 IP 10.203.12.137 > 224.0.0.18: VRRPv2, Advertisement, vrid 50, prio 255, authtype none, intvl 1s, length 20
10:42:23.577365 IP 10.203.12.132 > 224.0.0.18: VRRPv2, Advertisement, vrid 70, prio 150, authtype none, intvl 1s, length 20
10:42:24.114488 IP 10.203.12.130 > 224.0.0.18: VRRPv2, Advertisement, vrid 202, prio 150, authtype none, intvl 1s, length 20
10:42:24.387004 IP 10.203.12.132 > 224.0.0.18: VRRPv2, Advertisement, vrid 70, prio 150, authtype none, intvl 1s, length 20

Filtrar por VRRP ID específico

Cada grupo de máquinas que participan en un VRRP tienen un VRRP ID asignado. Éste debe ser único por grupo de máquinas y por interfaz. Si quieres escuchar los heartbeats específicos de un VRRP ID, tienes que ejecutar:

tcpdump -i <interface> ether src 00:00:5e:00:01:

Donde «<VRID>» es el VRRP ID en hexadecimal.

Montar un host FTP como partición de Linux

ftpHace un tiempo contraté un hosting web y a no ser que contrates algo que se va de precio, el acceso suele ser a través WEB o a través del protocolo FTP. Esto es bastante coñazo si cada vez que modificas un fichero, tienes que tener algún software cliente de FTP subiendo y bajando continuamente.

A este problema, le he encontrado 2 soluciones:

  • Usar un editor que soporte la edición vía FTP. Por ejemplo, ultraedit.
  • Crear una partición en Linux que sea montaje del servidor FTP.

En este post os voy a explicar el segundo caso. Para ello necesitamos el software curlftpfs. Si no lo tienes instalado, ejecuta:

# sudo aptitutde install curlftpfs

Esta aplicación se encarga de hacer transparente la gestión de ficheros por FTP, de modo que a nivel de usuario, es como si estuvieras manejando los ficheros en local. La única diferencia es que se nota que las acciones de abrir un fichero, o grabarlo tardan más de lo normal, ya que al realizar esa acción internamente curlftpfs está realizando un GET o un PUT vía FTP.

Al lío, para crear un punto de montaje, basta con crear un directorio donde vayamos a montar el FTP:

# mkdir /punto/de/montaje

y ahora ya podemos ejecutar:

# curlftpfs ftp://servidorftp.algo /punto/de/montaje

En caso de que el FTP tenga usuario y password:

# curlftpfs ftp://usuario:password@servidorftp.algo /punto/de/montaje

El puerto habitual de FTP es el 21, pero a veces es diferente. Esto se podría indicar así:

# curlftpfs ftp://servidorftp.algo:numeroDePuerto /punto/de/montaje

y podemos realizar una combinación de todas las opciones:

# curlftpfs ftp://usuario:password@servidorftp.algo:numeroDePuerto /punto/de/montaje

De este modo podemos visualizar, editar, borrar los ficheros de forma transparente a las transacciones FTP. Para desmontar, se ejecutaría el siguiente comando:

# sudo umount -l /punto/de/montaje

Si tenéis cualquier duda o comentario, sois bienvenidos!

Hoax en Whatsapp

Esta tarde un amigo me ha enviado un mensaje a través de Whatsapp sugiriéndome que los servidores de la aplicación están saturados y que si no quiero que se me fastidie el servicio de mensajería, reenvíe el mensaje a mis contactos… Fantástico, ya tenemos HOAX (Spam) en Whatsapp ¬¬.

El mensaje decía algo así:

«Este mensaje es para informarles a todos nuestros usuarios, que nuestros servidores han estado recientemente muy congestionados, por lo que estamos pidiendo su ayuda para solucionar este problema. Necesitamos que nuestros usuarios activos  reenvien este mensaje a cada una de las personas de su lista de contactos a fin de confirmar nuestros usuarios activos que utilizan WhatsApp, si usted no envía este mensaje a todos sus contactos de WhatsApp, entonces su cuenta permanecerá inactiva con la consecuencia de perder todos sus contactos. El símbolo de actualización automática en su SmartPhone, aparecera con la transmisión de este mensaje. Su SmartPhone se actualizará dentro de las 24 horas siguientes, contará con un nuevo  diseño y un nuevo color para el chat. Estimados usuarios de WhatsApp, vamos a hacer una actualización para WhatsApp de 23:00 p.m. hasta las 05:00 a.m. de este día. Si usted no envía esto a todos sus contactos la actualización se cancelará y no tendrá la posibilidad de chatear con sus contactos»

Para los que no sepan lo que es un Hoax, pasaros por la wikipedia… en resumen el creador está intentando engañar a la gente para que reenvíen el mensaje con diversos fines. En cualquier caso, debe de quedar claro que si realmente Whatsapp estuviera saturado, el aviso no sería a través de un mensaje de un contacto… sería algo bastante más oficial y se transmitiría en los medios de comunicación.

Este caso me recuerda al sonado e-mail que lo reenviaban (y aún sigo recibiendo alguno de vez en cuando…) tus contactos y decía algo así como «Hotmail se cierra«.  La primera vez que lo recibí fue hace unos 7 años, y todavía estoy deseando que se haga realidad.. jaja, pero me temo que no va a haber suerte. Ójaja Hotmail cierre y sus usuarios disfruten de otros servicios de correo alternativos y probablemente mejores… como GMail :P.

Table is marked as crashed and should be repaired

Hace poco me encontré un error en una aplicación que tengo con Perl en la que realiza SELECTs, DELETEs y UPDATEs en una BBDD MySQL.

El error lo provocaba MySQL e indicaba lo siguiente:

Error    : Table './base_de_datos/nombre_de_tabla' is marked as crashed and should be repaired

Esto se puede solucionar de varias maneras. En esta entrada describiremos cómo solucionarlo utilizando las herramientas que proporciona MySQL.

Utilizando el comando «mysqlcheck» chequea y repara si está corrupta:

[root@host01]# ./mysql/bin/mysqlcheck --auto-repair base_de_datos nombre_de_tabla -u usuario -p
Enter password: 
base_de_datos.nombre_de_tabla
warning  : Table is marked as crashed
warning  : 4 clients are using or haven't closed the table properly
error    : Record-count is not ok; is 112323   Should be: 112803
warning  : Found 33620 deleted space.   Should be 0
warning  : Found 480 deleted blocks       Should be: 0
error    : Corrupt

Es conveniente hacer backup de la BBDD antes de hacer cualquier cambio.

Ya tenemos Dropbox para Android!

Después de tenernos a la espera… ya está disponible Dropbox en el Android Market. Se trata de una gran noticia de la que podrán disfrutar los usuarios de este magnífico disco duro virtual.

Y es que Dropbox, para los que no lo conozcan, es un servicio de alojamiento de archivos multiplataforma y gratuito. Este servicio permite a sus usuarios almacenar y sincronizar ficheros entre computadoras. Con instalar un cliente para Windows, Linux, MacOS, iPhoneOS y ahora Android puedes acceder a los ficheros que están en el servidor de Dropbox. Además, desde la interfaz web también es posible acceder a nuestros ficheros sin necesidad de tener que instalar el cliente. Gran utilidad, desde luego.

Dropbox ofrece un servicio gratuito con 2 GB, pero podemos llegar a tener 8 GB invitando a otros a usar este servicio. Se puede optar a tener más tamaño 50 GB ó 100 GB pagando una cuota al año. Os animo a utilizar este fantástico servicio.

Android 2.1 en el HTC Hero -> 16 Abril

Según leo en Xakata Móvil, ya existe fecha de actualización para el HTC Hero a Android 2.1 con Sense, una de las actualizaciones más esperadas ya que este terminal no había sufrido ninguna otra desde las versión 1.5.

Esta actualización llegará a España a mano de Orange el día 16 de abril, según se ha filtrado a través de un foro de desarrolladores.

El listado de Países-Fechas previstas es la siguiente:

  • Países Nórdicos, Grecia, Rusia, Ucrania, Arabia Saudi – 2 de Abril
  • Orange España – 16 de Abril
  • T-Mobile UK – 16 de Abril
  • Orange UK – 16 de Abril
  • T-Mobile Alemania – 16 de Abril
  • Orange Francia – 22 de Abril
  • Vodacom Sudáfrica – 22 de Abril
  • Hutchison 3G UK – 22 de Abril
  • Bélgica – 4 de Mayo
  • Turquía – 4 de Mayo
  • T-Mobile Polonia – 10 de Mayo
  • T-Mobile Hungría – 10 de Mayo
  • T-Mobile Macedonia – 10 de Mayo

En definitiva es una gran noticia para los usuarios de HTC Hero, y que además será uno de los primeros terminales que actualizarán a esta versión de Android.

vía Xakata Móvil.

MWC 2010 presenta el HTC Legend

En el Mobile World Congress 2010 se ha presentado este nuevo modelo de HTC que parece que viene a ser el sustituto del popular Hero. HTC Legend utiliza el archiconocido SSOO Android (El cuál se vende ya en 60000 terminales diariamente) en su versión 2.1 y viene con un procesador de 600 Mhz, 512 MB de memoria ROM y 384 MB de memoria RAM. Sus cualidad HW hacen que las aplicaciones funcionen aparentemente ligeras, como se puede apreciar en el siguiente video:

Las espectativas dicen que es probable que Vodafone presente este modelo de forma exclusiva a partir de abril, así como lo hizo Orange con el HTC Hero.

Commandlinefu

Hace un tiempo descubrí la web commandlinefu.com y resulta que ahora es una de las páginas que más visito.La idea de la web es, como todas las buenas ideas, muy simple: Se trata de un portal en el que los usuarios pueden añadir comandos de Unix/Linux y éstos son votados por el resto de usuarios. Entre otras, permite las siguientes opciones:

  • Mostrar el resultado de una ejecución del comando con Show sample output.
  • Añadir comentarios al comando.
  • Añadir el comando a la lista de favoritos que puede tener cada usuario.
  • Añadir un comando alternativo que realice la misma función.
  • Indicar que el comando el malicioso.

Permite ordenar los comandos de distintas formas. Según los votos recibidos en un período de tiempo, o según la antiguedad del comando en la web. Permite variar el período de tiempo de nuestra elección de orden.

Os recomiendo que visitéis directamente los comandos más votados, donde yo he encontrado joyas como:

# mtr, better than traceroute and ping combined
mtr google.com
# Serve current directory tree at http://$HOSTNAME:8000/
python -m SimpleHTTPServer
# Runs previous command replacing foo by bar every time that foo appears
!!:gs/foo/bar

Además cuenta con una fantástica API que aparte de ser sencilla, permite acceder a los contenidos desde la propia consola:

$ curl http://www.commandlinefu.com/commands/browse/sort-by-votes/plaintext