09 enero 2017

Migrar tablas MyISAM a Innodb

La semana pasada instalé un blog de wordpress para el que me proporcionaron unos scripts de instalación. Estos scripts me los hacían llegar de otra empresa a la que uno de nuestros clientes había contratado el diseño de su blog.

Me encontré con varios problemas, ya que la versión de la base de datos era 5.7, y después de solucionarlos (básicamente bajando un poco la seguridad), me encontré con que la base de datos se había instalado con tablas MyISAM en lugar de InnoDB.

Buscando cómo migrar las tablas, encontré una buena solución en Stack Overflow que detallo a continuación:

En el cliente de mysql pegamos el siguiente código


 SET @DATABASE_NAME = 'name_of_your_db';  
 SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements  
 FROM  information_schema.tables AS tb  
 WHERE  table_schema = @DATABASE_NAME  
 AND   `ENGINE` = 'MyISAM'  
 AND   `TABLE_TYPE` = 'BASE TABLE'  
 ORDER BY table_name DESC;  



El resultado de esta consulta lo volvemos a pegar en el cliente y hará la transformación que estamos buscando

El enlace a la discusión sobre ello aquí








26 noviembre 2016

udiskctl - Cómo montar discos usb cuando estamos en linea de comando y los habíamos montado en el escritorio

Actualmente estoy utilizando (probando) Ubuntu 16.04. No me parece una mala distribución, teniendo en cuenta que yo era una persona que lo hacía casi todo a mano y me estoy adaptando a que Ubuntu lo haga casi todo por mi automáticmaente

Una de las cosas que hace por mi es montar los discos usb externos. No hace falta que le de ninguna indicación, y él sólo coge el nombre del volumen y lo monta en la ruta /media/usuario/Nombre del Volumen. No necesito editar fstab ni estar haciendo cosas extrañas (entiendo que las últimas versiones de Fedora y de OpenSuse también lo hacen, pero mi experiencia actual es con Ubuntu)

Cuando estás en el escritorio, está muy bien, pero hay veces, que estoy utilizando mi ordenador del trabajo (que tiene Windows) y me quiero conectar a mi ordenador personal y acceder a un disco USB que está conectado.

Pues bien, una de estas veces me encontré a mi mujer logueada, y el disco que tenía montado con propiedad de mi usuario, en una ruta para mí, estaba montado con el propietario del usuario de mi mujer, y la ruta había cambiado para su usuario.

Directamente lo desmonté con el usuario root, pero no tenía ni idea de cómo podía replicar el comportamiento del escritorio en línea de comando sin tener que volver a editar fstab y opciones de montaje, etc ,etc...

Buscando un poco encontré udisks , que provee interfaces para acceso a dispositivos de almacenamiento y discos. Cualquier aplicación puede acceder al demonio udisksd a través de udisks.

Todo esto está muy bien, pero seguía sin saber cómo acceder. Buscando un poco más encontré udisksctl , que es un comando que permite interactuar con udisks en línea de comando.

Su uso es muy fácil:

jose@r2d2:~$ udisksctl mount -b /dev/sdb1
==== AUTHENTICATING FOR org.freedesktop.udisks2.filesystem-mount-other-seat ===
Para montar TOSHIBA MQ01UBD100 (/dev/sdb1) necesita autenticarse
Multiple identities can be used for authentication:
 1.  Jose ,,, (jose)
 2.  Vanesa ,,, (vanesa)
Choose identity to authenticate as (1-2): 1
Password:
==== AUTHENTICATION COMPLETE ===
Mounted /dev/sdb1 at /media/jose/virtualizacion.
jose@r2d2:~$ l

Simplemente hay que saber el dispositivo de bloque que se corresponde a nuestro disco USB y lo podremos montar con nuestro usuario como si estuviéramos en el escritorio.

10 junio 2016

Cómo utilizar ansible con Vagrant

Desde que conocí Vagrant, me ha parecido un software muy útil para preparar pequeñas maquetas con máquinas virtuales que tengan que "vivir" y "morir" rápidamente.

Además si en nuestra máquina disponemos de ansible, podemos aprovechar para provisionar lo que queramos en nuestra/s máquinas virtuales.

Por supuesto, lo mismo lo podemos hacer con scripts de bash, pero lo interesante de utilizar ansible es que podemos reutilizar playbooks que tengamos para otros despliegues.

Todo se ve mejor con un ejemplo.

El primer paso es crear la carpeta vagrant-ansible. La podemos llamar así, o la podemos llamar como queramos, pero poniendo un nombre descriptivo sabremos por dónde nos estamos moviendo...

 # mkdir vagrant-ansible  



Una vez hecho esto, debemos situarnos en el directorio recientemente creado y crear un vagrant file:

 # vagrant init centos/7  



Con esto creamos el vagrantfile básico para instalar un box con centos 7.

Personalizamos el fichero tanto como queramos, pero la parte más importante, viene al final donde indicamos que vamos  a provisionar con ansible:

 config.vm.provision "ansible" do |ansible|  
  ansible.playbook="playbook.yml"  
  end  
 end  


Con estas últimas líneas (el último end es el propio del fichero), estamos indicando en el fichero de configuración que vamos a utilizar ansible y que vamos autilizar el playbook llamado (imaginativamente)  playbook.yml. Este playbook estará en el mismo sitio donde esté el Vagrantfile, y contendrá la información que queramos de despliegue de la o las máquinas.


15 octubre 2013

Consideraciones nginx con soporte php y mysql en Fedora 19

Hace tiempo que escribí varios posts sobre la instalación de nginx con soporte de php. Eran otros tiempos y nginx era mucho menos popular, conseguir soporte de php mediante fastcgi era un poco más complicado, aunque finalmente el resultado era satisfactorio.

Últimamente trabajo más con apache y quería darle un repaso a cómo está en la actualidad nginx y aprovechando un par de máquinas virtuales que tengo montadas con kvm, me he puesto manos a la obra.

En primer lugar ha sido una grata sorpresa el ver que tengo todos los paquetes necesarios en los repositorios de Fedora. Lo sospechaba, por algún artículo que había leído sobre ello y el utilizar el yum para instalar simplmemente lo constató-

Una vez superado el paso de la instalación, procedo a instalar php-fpm, que es la "nueva" manera "enganchar" con php nginx.

Aquí comienzan a suceder cosas extrañas. Intento acceder a un "index.php" con un "phpinfo()", y muestra una página en blanco. Analizo los logs y veo que tengo código 200, pero no me muestra nada. Me sumerjo en los foros, y al final encuentro el error.

En la línea de php correspondiente a la ejecución del script, en el fichero de configuración trae esta línea:

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

Esta línea hay que cambiarla por ésta:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


Una pequeña tontería, pero que me tenía un poco parado, porque no sabía por dónde seguir

Después continué con php y también pude ver un par de cosas "raras".

Como no tenía soporte de mysql decidí instalar el módulo necesario para tener soporte. Cuando lo hice pude observar, que en la configuración de php me indica que no tiene soporte de php, sin embargo, si bajamos en la página del phpinfo, podemos ver que sí tengo soporte php.


En esta captura podemos ver todo lo que me indica que está deshabilitado, incluído el soporte gd:



A continuación se puede ver cómo si tengo soporte de gd y de mysql, por ejemplo:





Son pequeñas tonterías, que no molestan demasiado, pero cuando llevas un tiempo alejado de esta manera de tener soporte de php, te sorprenden un poc.

Supongo que profundizando en la documentación se podrá encontrar la respuesta a este comportamiento, así que en cuanto tenga un ratillo investigo un poco más a ver que sacamos en claro.

23 abril 2013

Cómo se puede emular la perdida de un disco externo en Linux

Una de las pruebas de certificación de los Clusters de Oracle es observar el comportamiento ante la pérdida de uno de los voting disk.

Estos discos normalmente se presentan a los servidores desde cabinas de almacenamiento externo y suelen tener varios caminos (dependiendo de las tarjetas HBA que dispongamos en el sistema).

Para emular la caída de un disco simplemente tenemos que enviar comandos scsi al dispositivo de bloque, indicándole que cambie su estado a offline.

Vamos a ver un ejemplo:


Primero buscamos nuestro disco objetivo. En un entorno Red Hat ejecutaríamos el comando "multipath -ll"

CRS1 (20017380050d10023) dm-2 IBM,2810XIV
size=16G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 7:0:0:1 sdb 8:16  active ready running
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 8:0:0:1 sdf 8:80  active ready running
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 7:0:1:1 sdj 8:144 active ready running
`-+- policy='round-robin 0' prio=1 status=active
  `- 8:0:1:1 sdn 8:208 active ready running

Podemos ver que los distintos caminos se corresponden a los dispositivos de bloque "sdb, sdf, sdj, sdn".

Ahora tenemos que poner offline cada uno de los caminos, para ello haríamos esto con cada uno (sólo mostramos el último):

# echo offline > /sys/class/block/sdn/device/state

Si hacemos un cat al fichero "state" de cada uno de los dispositivos, podremos ver que están "offline".

En "messages" veríamos estos mensajes:

Apr 23 15:54:00 server kernel: sd 7:0:0:1: rejecting I/O to offline device
Apr 23 15:54:00 server kernel: device-mapper: multipath: Failing path 8:16.
Apr 23 15:54:00 server multipathd: 8:16: mark as failed
Apr 23 15:54:00 server multipathd: CRS1: remaining active paths: 3
Apr 23 15:54:10 server kernel: sd 8:0:0:1: rejecting I/O to offline device
Apr 23 15:54:10 server kernel: device-mapper: multipath: Failing path 8:80.
Apr 23 15:54:10 server multipathd: 8:80: mark as failed
Apr 23 15:54:10 server multipathd: CRS1: remaining active paths: 2
Apr 23 15:54:18 server kernel: sd 7:0:1:1: rejecting I/O to offline device
Apr 23 15:54:18 server kernel: device-mapper: multipath: Failing path 8:144.
Apr 23 15:54:18 server multipathd: 8:144: mark as failed
Apr 23 15:54:18 server multipathd: CRS1: remaining active paths: 1
Apr 23 15:54:32 server kernel: sd 8:0:1:1: rejecting I/O to offline device
Apr 23 15:54:32 server kernel: device-mapper: multipath: Failing path 8:208.
Apr 23 15:54:32 server kernel: end_request: I/O error, dev dm-2, sector 524368
Apr 23 15:54:32 server multipathd: 8:208: mark as failed
Apr 23 15:54:32 server multipathd: CRS1: remaining active paths: 0
Apr 23 15:54:33 server kernel: end_request: I/O error, dev dm-2, sector 0
Apr 23 15:54:33 server kernel: end_request: I/O error, dev dm-2, sector 4151

Para ponerlos en en el estado normal ejecutaríamos en cada dispositivo:


# echo running > /sys/class/block/sdn/device/state


Y veríamos en "messages" la recuperación:

Apr 23 16:05:01 server multipathd: CRS1: sdn - directio checker reports path is up
Apr 23 16:05:01 server multipathd: 8:208: reinstated
Apr 23 16:05:01 server multipathd: CRS1: remaining active paths: 1
Apr 23 16:05:14 server multipathd: CRS1: sdj - directio checker reports path is up
Apr 23 16:05:14 server multipathd: 8:144: reinstated
Apr 23 16:05:14 server multipathd: CRS1: remaining active paths: 2
Apr 23 16:05:25 server multipathd: CRS1: sdf - directio checker reports path is up
Apr 23 16:05:25 server multipathd: 8:80: reinstated
Apr 23 16:05:25 server multipathd: CRS1: remaining active paths: 3
Apr 23 16:05:40 server multipathd: CRS1: sdb - directio checker reports path is up
Apr 23 16:05:40 server multipathd: 8:16: reinstated
Apr 23 16:05:40 server multipathd: CRS1: remaining active paths: 4


04 octubre 2012

¿Qué es lo invisible?

Gracias al TED encontré un vídeo muy interesante de dibujos animados explicando cómo hay muchas cosas invisibles para nosotros y tratando de hacer que las comprendamos aunque sea un poquito.

De optimizaciones de MySQL

Hace ya un tiempo que no escribo ninguna entrada en el blog debido a la cantidad de trabajo que me está viniendo encima, que viendo los tiempos que corren, quizás hay que pensar que es más una cuestión de fortuna que de desgracia.

Sigamos con lo que me interesa. El hecho es que mi grupo se va a hacer cargo de un despliegue web de un cliente. El despliegue es servicio un servidor web Apache con PHP, una base de datos MySQL. Al trabajar en el mundo de la consultoría, para bien o para mal, hay otro grupo que hace el "delivery", es decir, ellos preparan las instalaciones y me las traspasan. En este caso, el cliente estaba bastante cabreado con el delivery de bases de datos. Es común pensar que MySQL es una base de datos de juguete, y entonces lo que hacen las consultoras es coger a un administrador de base de datos de Oracle, que es una base de datos de verdad, y lo ponen a preparar la entraega. En nuestro caso ha pasado, que el cliente no sólo no es tonto, sino que encima sabe técnicamente y ha llegado un momento en el que ha visto que no se ha optimizado la base de datos sino que la base de datos era un cuello de botella.

Finalmente nos han traspasado a nosotros el Delivery de la base de datos, lo hemos hecho y el cliente está un poco más contento porque ahora la base de datos funciona bien. Ahora yo me pregunto, ¿tengo que hacer yo la documentación de algo que me tienen que traspasar?.

Respecto a las optimizaciones nos dedicamos a seguir las recomendaciones de la web de mysql, o en caso de duda, las de mysqlperformance.

Finalmente la sensación que tengo es que la mejora en la base de datos viene dada por el aumento de dos variables:

innodb_read_io_threads
innodb_write_io_threads

Con 12 cores situamos los parámetros anteriores en 24, y da la sensación de que esa ha sido la mejora sustancial.

Ahora se ha traspasado la responsabilidad a Apache, pero realmente por mucho que optimicemos, hay una seguridad del 90% de que haya que optimizar el código php, y norlmalmente esta es la parte menos flexible.

03 mayo 2012

Sucesos extraños con ext4

Hace poco más de seis meses cambié de distribución en mi portátil y pasé de uno de los sabores de Debian (Mint), a uno de los sabores de RedHat (Fedora). Hasta la fecha la experiencia de usuario, mía y de mi mujer (que no es técnica) no ha podido ser más satisfactoria.

Hace un par de semanas asistí a un taller de Oracle Weblogic y allí me sucedió una cosa muy extraña. Encendí mi portátil, y se me quedó en el arranque indicándome que había un filesystem con muchos fallos y que tenía que ejecutar un fsck a ese filesystem manualmente. El filesystem en cuestión era /home, debido a lo cual me eché a temblar y casi a tener sudores fríos.

Después de unos 20 minutos de fsck, me cansé y pensé en montarlo para ver si había perdido mucha información, y para mi sorpresa estaba toda (o eso parecía).

¿Qué había hecho fuera de lo normal con ese filesystem los días previos? Pues simplemente lo había extendido en 10 GB con lvm y redimensionado con resize2fs.

Ese mismo día tuve que extender /tmp para que pudiera soportar la descompresión de weblogic. En el siguiente reinicio tenía los errores en /home y en /tmp. Está claro que hay un problema con ext4 y el redimensionamiento, quizás con las herramientas de redimensionamiento y el ext4 propiamente, quizás con lvm., realmente no lo sé, no he investigado demasiado, pero por las pocas cadenas que busqué no encontré nada. Los problemas que indicaban que había eran extraños, activado el flag del compresión en ínodos que no están comprimidos, ínodos que parecen directorios, pero que son ficheros..., etc, etc..., lo peor es que eran muchísimos. Ejecuté una noche el  fsck y estuvo toda la noche corrigiendo errores sin terminar.

Finalmente la solución fue muy sencilla. Creé un nuevo filesystem del mismo tamaño, copié toda la información ahí, cambié la entrada del fstab, y todo volvió a funcionar. Ahora tengo pendiente la parte de investigación, puesto que tiemblo pensando que me pueda volver a pasar el mismo problema.

10 febrero 2012

Cómo saber que tamaño tiene una base de datos en mysql

Desde el cambio a la versión 5 de MySQL in con la introducción de las vistas del Information_schema, saber qué tamaño tiene una base de datos es relativamente fácil, tan fácil como ejecutar esta consulta:



SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB"

FROM information_schema.TABLES GROUP BY table_schema ; 


El problema surge cuando tenemos una base de datos de la versión 4, ya que en estas versiones MySQL no disponía de Information_schema.

Yo he hecho un pequeño script que  parsea la información que proporciona el SHOW TABLE STATUS, de modo que me da un valor aproximado.

El script sería éste:
(lista_basesdatos es una lista con las bases de datos que quiero medir)


#!/bin/bash



for i in `cat lista_basesdedatos`; do



a=`mysql -u root -D ${i} -e 'show table status\G'|grep Data_l|awk '{print $2}'|(tr '\n' +; echo 0)|bc`

b=`mysql -u root -D ${i} -e 'show table status\G'|grep Index_l|awk '{print $2}'|(tr '\n' +; echo 0)|bc`



resultado=`echo $a+$b|bc`;



echo $i $resultado

done








05 febrero 2012

Un forastero llega a la ciudad y quizás te haga mejorar la productividad, bienvenido lazymeter

Pues sí, lo descubrí de casualidad mientras ojeaba unas cosas de evernote, qué incongruencia.

Se trata de lazymeter, parece que sigue 100% "The Cycle", aunque es tan nuevo que de momento no tiene una aplicación pesada para Android, aunque dicen que la tienen en desarrollo.

Merece la pena probarla, ya que además de poder anotar tareas, cambiarlas de día, moficiar el orden de la tarea, etc., nos va mostrando el porcentaje de logro diario. Puede ser un buen sistema de motivación

En unos días supongo que habré probado el sistema más profundamente y tendré oportunidad e escribir una opinión más extensa sobre él

31 enero 2012

Herramientas para gestionar el tiempo de una manera eficaz I

Como muchos administradores de sistemas, tengo el defecto de estar en una búsqueda casi constante de las mejores herramientas para poder tener una gestión eficaz del tiempo.

En otro post hablé de "The Cycle" de Tom Limoncelli, su método de gestión del tiempo para administradores de sistemas  del cual se puede leer más en su blog, o en su libro, "Gestión del Tiempo para Administradores de Sistemas".

He estando probando varios programas, lo cual me ha estado llevando a una gestión ineficaz del tiempo, y por una causa otra he dejado de utilizarlos (lo cual no significa que en algún momento los retome).

¿Qué es lo que busco en un programa para el ordenador y por supuesto  para el móvil para poder llevar una gestión eficaz del tiempo?

Lo primero que busco es una  aplicación web, para que sea multiplataforma. En la oficina trabajo con Windows, pero luego en mi casa sólo utilizo Linux.
Quiero que sea compatible con Firefox y Chrome, que son los navegadores que utilizo casi exclusivamente.

Lo segundo que busco es que tenga una aplicación pesada para el móvil.
Cuando trabajo con el ordenador casi siempre tengo conexión a internet.
Cuando utilizo el móvil, no siempre tengo conexión, y hay muchos momentos en los que quiero anotar algo sin disponer dde conexión, lo cual no sería posible con una aplicación web. Además si no tuviera conexión en mi ordenador, siempre me quedaría el móvil.

Para la aplicación web, busco que sea sencilla, me da igual que tenga múltiples listas, porque realmente utilizo las lista de "hoy" y de "mañana". Después de intentar aplicar The Cycle, sí que  encuentro ventajas en poder tener múltiples listas porque puedo gestionar proyectos pequeños, que no afectan a mi planificación diaria, pero es importante resaltar, que no es fundamental.

Para la aplicación móvil, busco algo sencillo, que no haga que mi teléfono con Android se quede sin recursos y que se pueda sincronizar con una web propia, o bien de terceros.

El método de selección de las herramientas que he ido probando ha sido bien sencillo, he ido probando programas para el móvil que se pudieran sincronizar con alguna web, ya fuera propia, o de terceros, mediante su API.

Esta es la lista de las aplicaciones que he probado:




En las siguientes entradas hablaré un poco de lo que más me ha gustado y disgustado de cada uno, haciendo un pequeño análisis del uso que yo les he dado a estas aplicaciones.

15 enero 2012

Año nuevo, editor nuevo

Quizás no es el título más apropiado que puede tener esta entrada, pero lo que quiero transmitir es que le quiero dar una oportunidad a emacs.

Casi siempre edito con vim, alguna vez, con nano, y es sólo decir emacs, y me da un poquito de repelús, pero he decidido que voy a aprender cómo usarlo para saber si es tan potente como dicen o por el contrario regreso a vim.

De momento lo que estoy viendo me está gustando, como por  ejemplo los diferentes modos mayores, o que cuando hago una búsqueda no se me quedan marcados los resultados, y tengo que introducir otro comando para desmcarcar.

Veremos en unas semanas qué tal me llevo con el.


Links:
http://www.gnu.org/software/emacs/
http://www.rpublica.net/emacs/start/start.html
http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html
http://www.merlos.org/documentos/linux/22-tutorial-de-emacs.html

14 octubre 2011

Fedora 16 Beta con Gnome 3.2

El título de la entrada es mi elección a las dos de la mañana en medio de un trabajo programado en casa.

He intentado instalar los 4 GB de DVD de OpenSuse 12.1 Beta desde un USB, pero algo no le ha gustado que después de cargar el kernel se quedaba con la pantalla parada.

Después de varias vueltas, "dimes y diretes" me he ido a la página de fedora project, y he visto que en la versión 16 Beta incorporan Gnome 3.2, systemd y el kernel 3.1, con lo cual he cambiado radicalmente. Ahora a esperar a ver si el cambio lo puedo hacer esta noche o tengo que esperar al día siguiente.

11 octubre 2011

Análisis de Gnome 3.2

En Linux Journal han hecho un completo análisis del nuevo escritorio integrado Gnome 3.2.

En este análisis muestran todas las características que tiene el nuevo entorno y concluyen varias cosas:


  • Puede ser la oportunidad para entornos clásicos que hasta ahora no se usaban; esto es debido a que al que no le guste la integración de Gnome puede buscar otras alternativas, y si no quiere probar KDE en Linux siempre existen otras alternativas
  • Los usuarios que vengan de Windows verán que no se limita a "copiar" el entorno de ventanas de Windows.
  • Al que ya le gustaba Gnome 3.0 le va  a encantar Gnome 3.2.
Ya es posible probar Gnom3 3.* con un livecd basado en OpenSuse.

06 octubre 2011

Cómo comprobar si un puerto esta abierto desde linux

La situación es que queremos comprobar que un puerto está abierto y disponemos de un servidor o un pc Linux desde donde hacerlo, nada tan fácil como usar netcat.

Podemos hacerlo de dos maneras, uno enganchando al puerto, o bien, sin enganchar y comprobando el código de retorno (es la manera que más me gusta a mi porque me es útil para hacer scripts).

La primera manera sería simplemente:

# nc host puerto

La segunta manera sería.

# nc -z host puerto; echo $?. Si el código es 0 el puerto está abierto, si es un 1 el puerto está cerrado

05 octubre 2011

Cómo saber si tengo instalado Oracle Enterprise Linux o Red Hat Linux?

Cuando instalamos Oracle Enterprise Linux (OEL),  nos damos cuenta de que los métodos de detección del sistema operativo nos muestran que es un Red Hat Linux.

Lo que hay que hacer es listar todos los ficheros que haya en /etc y que terminen por -release:

# ls /etc/*-release

Nos puede mostrar dos o tres ficheros. En la versión que yo tengo instalada tengo 2:


-rw-r--r-- 1 root root 64 Apr  2  2010 /etc/enterprise-release
-rw-r--r-- 1 root root 54 Apr  2  2010 /etc/redhat-release

El primer fichero no existe en las distribuciones de RedHat, es propio de las de OEL; si le hacemos un cat podemos ver la versión y el alias (aunque no pone que es OEL):


Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)



04 octubre 2011

Cómo utilizar ssh en un bucle en un script



Alguna vez nos puede suceder que queramos incluír el comando ssh en un bucle para ejecutar una tarea en una serie de máquinas.

Para ello podemos utilizar "while read...", pero cuando hacemos efectivamente el script podemos ver que se ejecuta en la primera máquina y no se ejcuta en las demás:

# while read server; do
    ssh $server 'uptime'
  done < list


La razón es que while lee de la entrada estándar (stdin) y el comando ssh toma el control de la entrada estándar, de manera que estropea el bucle que se está haciendo. Añadiendo la opción -n antes del comando ssh redirecciona a la entrada estándar que espera ssh de /dev/null, previniendo que ssh estropee el bucle.




De este modo el comando correcto que funcionaría sería:


# while read server; do
    ssh -n $server 'uptime'
  done < list





Nuevo Data Center de Google en Dublin

Leo en datacenterknowledge que Google planea construir otro datacenter en Dublin. Google planea hacer una inversión de alrededor de 75 millones de euros.

Parece claro que Irlanda se está convirtiendo en uno de los centros computacionales más importantes del mundo, con centros de datos de Google, Microsoft, Amazon y demás compañías tecnológicas.

En estos tiempos tan revueltos, creo que habría que reflexionar un poco, sobre las noticias que salen en televisión, lo que nos transmiten nuestros políticos, y lo que realmente está pasando.

No paramos de escuchar, ver  o leer noticias totalmente negativas sobre la economía europea, los países y la crisis, pero lo cierto es que el primer país que rescató la unión europea es el país que más inversiones tecnológicas está recibiendo.

España está aguantando el tipo sin necesidad de que le rescate la unión europea..., qué grandes noticias macroeconómicas..., casi 5 millones de parados. Grecia ya ha tenido un rescate, va por el segundo..., ahí no invierte nadie.

Quizás si es cierto que deberíamos estar un poco al margen de la unión europea y convertirnos en una especie de anarquía organizada, de ese modo aumentaríamos la competitividad por el capital. El problema es que ahora puede ser demasiado tarde. Los gigantes tecnológicos ya están posicionados y no van a cambiar su infraestructura de país, por tener unas condiciones semejantes.

Tenemos dos opciones:

  1. Irnos a trabajar a Irlanda
  2. Tirar para adelante, porque esto lo sacamos sí o sí
Yo personalmente soy más partidario de la segunda, aunque nunca descarto la primera




30 septiembre 2011

Lanzado Gnome 3.2

El proyecto Gnome ha lanzado la versión 3.2 del entorno de escritorio.

Entre las notas de la versión para mi lo más destacable es la integración con cuentas en línea, de modo que se puedan gestionar, documentos, contactos, eventos de calendario, etc, etc.

Son grandes avances en todos los aspectos del entorno de escritorio.

Se ha cambiado totalmente la típica barra de programas y hay mayor rapidez en la ejecución de tareas, teniendo más diferencias que similitudes con sus "rivales"



Esperemos que no pase mucho tiempo hasta que se pueda disfrutar integrada en alguna distribución.

29 septiembre 2011

Nslookup, diferencias entre sistemas HP-UX y Linux

Hace unos días recibimos una petición por parte de una unidad de soporte de negocio.

En la petición nos pedían que cambiáramos el orden en el que los resolutores del sistema leían la información de los nombres de dominio. Nada difícil de hacer modificando el nsswitch.conf, tanto en HP-UX como en Linux.

Ejecutamos la petición y resolvimos el ticket de soporte que nos habían generado.

A los pocos minutos nos vuelven a  asignar el mismo ticket de soporte y nos dicen que no funciona, porque si realizan peticiones con nslookup, se puede ver que están resolviendo los nombres de dominio mediante los servidores de DNS en primer lugar en Linux, mientras que en HP-UX sí estaba funcionando.

Después de una árdua mañana de investigación, de estar haciendo depuración de todo lo que podíamos y no obtener resultados decidimos comenzar a buscar en internet y encontramos la razón de este "mal" funcionamiento.

El paquete nslookup de HP-UX es un paquete independiente, un depot,  que probablemente ha sido modificado por los desarrolladores de HP-UX, de ahí el comportamiento, pero el paquete nslookup que hay en los sistemas Linux, es parte de las herramientas de bind, el servidor de DNS, y precisamente está programado para gestionar, manejar, depurar los sistemas de nombre de dominio, no los ficheros de host.

En resumen, que para otro día, lo primero que tenemos que hacer es ponernos a buscar "por ahí" en lugar de ponernos a depurar   :-)