Archive for the ‘Uncategorized’ Category

h1

Error Vmware 1.0.8 /usr/lib/libxcb-xlib.so.0 en Kubuntu

07/01/2009

Al arrancar vmware server 1.0.8 en Kubuntu Hardy puede ocurrir el siguiente error:

carlos@ikeys:~/temp$ vmware
Locking assertion failure. Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb6f86767]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb6f868b1]
#2 /usr/lib/libX11.so.6(_XReply+0xfd) [0xb7e261bd]
#3 /usr/lib/vmware/lib/libXrender.so.1/libXrender.so.1(XRenderQueryFormats+0x109) [0xb7d06969]
#4 /usr/lib/vmware/lib/libXrender.so.1/libXrender.so.1(XRenderFindFormat+0x4c) [0xb7d06f4c]
#5 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b4c180]
#6 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b4cd2c]
#7 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_draw_pixbuf+0x270) [0xb7b1cc14]
#8 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b2924f]
#9 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_draw_pixbuf+0x270) [0xb7b1cc14]
#10 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_pixbuf_render_pixmap_and_mask_for_colormap+0x255) [0xb7b28b34]
#11 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a2d298]
#12 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a2d586]
#13 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a2f77e]
#14 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0xd1) [0xb7c42459]
#15 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0 [0xb7c2a3a1]
#16 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_closure_invoke+0x1b1) [0xb7c2a076]
#17 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0 [0xb7c416eb]
#18 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_signal_emit_valist+0x91e) [0xb7c40d46]
#19 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_signal_emit+0x38) [0xb7c410b8]
Locking assertion failure. Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb6f86767]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_lock+0x2e) [0xb6f8681e]
#2 /usr/lib/libX11.so.6 [0xb7e25518]
#3 /usr/lib/libX11.so.6(XAddExtension+0x2c) [0xb7e08c9c]
#4 /usr/lib/vmware/lib/libXft.so.2/libXft.so.2(_XftDisplayInfoGet+0x77) [0xb7cfeed7]
#5 /usr/lib/vmware/lib/libXft.so.2/libXft.so.2 [0xb7cfd8b1]
#6 /usr/lib/vmware/lib/libXft.so.2/libXft.so.2 [0xb7cfdd39]
#7 /usr/lib/vmware/lib/libXft.so.2/libXft.so.2(XftDrawPicture+0x10) [0xb7cfdec0]
#8 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b4a9b6]
#9 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b4cd75]
#10 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_draw_pixbuf+0x270) [0xb7b1cc14]
#11 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b2924f]
#12 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_draw_pixbuf+0x270) [0xb7b1cc14]
#13 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_pixbuf_render_pixmap_and_mask_for_colormap+0x255) [0xb7b28b34]
#14 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a2d298]
#15 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a2d586]
#16 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a2f77e]
#17 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0xd1) [0xb7c42459]
#18 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0 [0xb7c2a3a1]
#19 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_closure_invoke+0x1b1) [0xb7c2a076]
vmware: ../../src/xcb_lock.c:77: _XGetXCBBuffer: Afirmación `((int) ((xcb_req) - (dpy->request)) >= 0)' fallida.

Debido a un bug en una librería es necesario hacer un downgrade de la misma o actualizar a una más moderna. La segunda solución es la explicada.

En el caso de arquitectura i386, descargar los siguientes paquetes:
http://packages.debian.org/experimental/i386/libxcb1/download
http://packages.debian.org/experimental/i386/libx11-6/download

Instalarlos sobreescribiendo las versiones presentes.
sudo dpkg -i --force-all libx11-6_1.1.99.2-1_i386.deb
sudo dpkg -i --force-all libxcb1_1.1.92-0.1_i386.deb

y reiniciar.

h1

Problemas al instalar VMware server 1.0.8 en kUbuntu (8.04)

21/12/2008

En la instalación se producen varios errores, ante ellos es necesario:

1º) Desinstalar gcc 4.2.4 e instalar 4.2.3. Se puede descargar de:
http://packages.ubuntu.com/hardy/i386/gcc-4.2/download

$ sudo apt-get remove --purge gcc
$sudo dpkg -i --force-all gcc-4.2_4.2.3-2ubuntu7_i386.deb

y se comprueba que ha quedado bien instalado con
carlos@WhenIGrewUp:~/downloads$ gcc -v
Usando especificaciones internas.
Objetivo: x86_64-linux-gnu
Configurado con: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Modelo de hilos: posix
gcc versión 4.2.3 (Ubuntu 4.2.3-1ubuntu3)

Si no, revisa la desinstalación y el enlace simbólico «gcc» en /usr/bin

Después, al ejecutarlo, frecuentemente sale el siguiente error:

carlos@ikeys:~/Escritorio/vmware-server-distrib$ vmware
/usr/lib/vmware/bin/vmware: /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware/bin/vmware: /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)
Locking assertion failure. Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb6fed767]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x31) [0xb6fed8b1]
#2 /usr/lib/libX11.so.6(_XReply+0xfd) [0xb7e781bd]
#3 /usr/lib/vmware/lib/libXrender.so.1/libXrender.so.1(XRenderQueryFormats+0x109) [0xb7d5a969]
#4 /usr/lib/vmware/lib/libXrender.so.1/libXrender.so.1(XRenderFindFormat+0x4c) [0xb7d5af4c]
#5 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7ba0180]
#6 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7ba0d2c]
#7 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_draw_pixbuf+0x270) [0xb7b70c14]
#8 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b7d24f]
#9 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_draw_pixbuf+0x270) [0xb7b70c14]
#10 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_pixbuf_render_pixmap_and_mask_for_colormap+0x255) [0xb7b7cb34]
#11 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a81298]
#12 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a81586]
#13 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a8377e]
#14 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0xd1) [0xb7c96459]
#15 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0 [0xb7c7e3a1]
#16 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_closure_invoke+0x1b1) [0xb7c7e076]
#17 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0 [0xb7c956eb]
#18 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_signal_emit_valist+0x91e) [0xb7c94d46]
#19 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_signal_emit+0x38) [0xb7c950b8]
Locking assertion failure. Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0xb6fed767]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_lock+0x2e) [0xb6fed81e]
#2 /usr/lib/libX11.so.6 [0xb7e77518]
#3 /usr/lib/libX11.so.6(XAddExtension+0x2c) [0xb7e5ac9c]
#4 /usr/lib/vmware/lib/libXft.so.2/libXft.so.2(_XftDisplayInfoGet+0x77) [0xb7d52ed7]
#5 /usr/lib/vmware/lib/libXft.so.2/libXft.so.2 [0xb7d518b1]
#6 /usr/lib/vmware/lib/libXft.so.2/libXft.so.2 [0xb7d51d39]
#7 /usr/lib/vmware/lib/libXft.so.2/libXft.so.2(XftDrawPicture+0x10) [0xb7d51ec0]
#8 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b9e9b6]
#9 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7ba0d75]
#10 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_draw_pixbuf+0x270) [0xb7b70c14]
#11 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0 [0xb7b7d24f]
#12 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_draw_pixbuf+0x270) [0xb7b70c14]
#13 /usr/lib/vmware/lib/libgdk-x11-2.0.so.0/libgdk-x11-2.0.so.0(gdk_pixbuf_render_pixmap_and_mask_for_colormap+0x255) [0xb7b7cb34]
#14 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a81298]
#15 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a81586]
#16 /usr/lib/vmware/lib/libgtk-x11-2.0.so.0/libgtk-x11-2.0.so.0 [0xb7a8377e]
#17 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0xd1) [0xb7c96459]
#18 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0 [0xb7c7e3a1]
#19 /usr/lib/vmware/lib/libgobject-2.0.so.0/libgobject-2.0.so.0(g_closure_invoke+0x1b1) [0xb7c7e076]
vmware: ../../src/xcb_lock.c:77: _XGetXCBBuffer: Afirmación `((int) ((xcb_req) - (dpy->request)) >= 0)' fallida.

Se arregla con:

$ sudo mv /usr/lib/vmware/lib/libgcc_s.so.1 /usr/lib/vmware/lib/libgcc_s.so.1_orig

h1

Eventum: Subir ficheros mayores de 2MB

15/12/2008

Ante esta limitación, es necesario hacer los siguientes cambios en el módulo PHP:
carlos@pilar002:/etc/php5/apache2$ nano php.ini
(...)
memory_limit = 256M
max_execution_time = 300
max_input_time = 600
post_max_size = 64M
upload_max_filesize = 64M
(...)

Configuración de MySQL:
carlos@pilar002:/etc/mysql$ nano my.cnf
(...)
max_allowed_packet: 64MB
(...)

Y reiniciar ambos servicios:
/etc/init.d/apache2 restart
/etc/init.d/mysql restart

fuente: PenoyTechCentral

h1

VMWare 2.0 sin posibilidad de CTRL-ALT-SUPR

12/12/2008

La funcionalidad de poder mandar un CTRL-ALT-SUPR a una máquina virtual desde un vmware 2.0 Infrastructure instalado en Linux no existe inicialmente. Es un fallo de diseño, y ni siquiera han incluído la opción de hacerlo a través del menú como en ediciones anteriores.

Para solucionarlo, es suficiente con incluir una directiva:

echo 'xkeymap.nokeycodeMap = true' > ~/.vmware/config

h1

Monit, como definir una cuenta de correo con autenticación SSL

08/12/2008

Este monitorizador de tareas permite enviar alertas en función de eventos o condiciones. En la versión 4.10 no permite definir que el login de SMTP sea SSL (Como la mayoría de los actuales), y utilizar un localhost suele ser inútil al rechazar los relays de correo a servidores no autenticados como medida contra el spam.

Por tanto es necesario utilizar un smtp público, como Gmail, que no utilice SSL o, en el caso de que lo utilice, actualizar a la beta 5 de Monit que ya soporta autenticación en SMTP por SSL.

En este último caso, tras descargarla es necesario instalar bison. También es conveniente, aunque no necesario, hacer una copia del monitrc:
$sudo cp /etc/monit/monitrc /root
Pero en principio ni se modifica ni se incluye uno nuevo. La instalación se compone de:

(según la configuración del sistema es probable necesitar hacerlo con permisos de superusuario).

$ ./configure --without-ssl
(...)
monit has been configured with the following options:
Architecture: LINUX
SSL support: disabled
resource monitoring: enabled
resource code: sysdep_LINUX.c
large files support: enabled
Compiler flags: -g -O2 -Wall -D _REENTRANT
Linker flags: -lpthread -lcrypt -lresolv -lnsl
pid file location: /var/run
$ make
$ make install

Instalado, definir los datos del envío de correo (es probable que algunas variables no figuren en el fichero de ejemplo):

$ sudo nano /etc/monit/monitrc
(...)
set mailserver smtp.gmail.com PORT 587 # primary mailserver
USERNAME "micuenta@gmail.com" PASSWORD "micontraseña" using TLSV1
(...)

Reiniciar monit
$ sudo /etc/init.d/monit restart
y comprobar, provocando algún evento, que se reciben correos de alerta. Además se pueden ver configuraciones de ejemplo para definir alertas aquí.

h1

Eventum: no conecta el usuario admin@example.com tras instalación

23/11/2008

Si tras instalar Eventum no se tiene acceso con el login por defecto (admin@example.com / admin), lo más probable es que el usuario de acceso a la base de datos de Eventum no tenga acceso a la misma, y por tanto no pueda constantar si el usuario introducido existe en la BD.

Para ello es preciso darle permisos:

pilar002:/var/www/eventum/config# mysql -u root -h localhost -p
Enter password:

mysql> GRANT ALL on eventumDB.* TO usuarioEventum@locahost;

una solución más directa es dar permisos a todas las bases de datos, sabiendo lo que se hace en cuestiones de seguridad:
mysql> GRANT SELECT ON *.* TO usuarioEventum

h1

Configurar Eventum en Español

23/11/2008

Esta herramienta para manejar y hacer seguimiento de incidencias en cualquier tipo de proyecto de ingeniería actualmente viene en Inglés. En la versión actual (2.1.1) no incorpora el Español, por lo cual si se desea traducir es necesario incorporar los diccionarios españoles.

Para ello se consultará el SVN del proyecto, se copiarán de él las traducciones y se le especificará a Eventum que utilice por defecto este idioma. Para ello:

1º) Bajarse del SVN todo el proyecto:
mkdir svn.eventum
cd svn.eventum
svn checkout svn://eventum.mysql.org/eventum-gpl/

2º) Localizamos los diccionarios
cd /home/carlos/temp/svn.eventum/eventum-gpl/trunk/eventum/misc/localization

y los copiamos en el directorio de Eventum:
cp -R es /var/www/eventum/misc/localization
cp es.po /var/www/eventum/misc/localization

3º) Activar el idioma Español en Eventum: hay dos formas
a) Copiando el class.language.php del SVN a nuestro Eventum:
cp /home/carlos/temp/eventumSVN/eventum-gpl/trunk/eventum/include/class.language.php /var/www/eventum/includes/class.language.php

b) Descomentando en /var/www/eventum/includes/class.language.php el idioma Español.
No obstante es más fiable el primer método.

4º) Indicar a Eventum el idioma predeterminado: viene en Inglés norteamericano, cambiarlo por es_ES.

nano /var/www/eventum/config/config.php
(...)
//define('APP_DEFAULT_LOCALE', 'en_US');
define('APP_DEFAULT_LOCALE', 'es_ES');
(...)

Y probar a conectarse, ya está traducido. En algún caso se puede necesitar reiniciar Apache:
sudo /etc/init.d/apache2 restart

Además, en el caso de que el hosting sea GNU/Linux, las locales deben estar configuradas en el mismo idioma en el que se desee Eventum:

# dpkg-reconfigure locales

aunque también se puede optar por una solución rápida: reemplazar el valor «en_US» de los siguientes ficheros por «es_ES«:

# nano eventum-2.2\config\config.php
# nano eventum-2.2\init.php

h1

Script sencillo para backups

22/11/2008

Generalmente en entornos de producción es necesario hacer copias de seguridad. Para ello se puede utilizar software como Bacula o hacernos nuestro pequeño script si las necesidades no son muchas.

En este caso muestro un ejemplo de script que corre en el cron de un servidor, el cual se conecta a dos máquinas por SSH, comprime ciertos directorios de algunas máquinas y los envía por scp al servidor. Posteriormente borra las copias con 2 días de antigüedad.

Para que las copias de seguridad sean automáticas, sin intervención del usuario, es necesario configurar el acceso SSH sin password.

El script de ejemplo es el siguiente:

#!/bin/bash
#Definir el servidor donde se almacenan las backups.
LOCALHOST="172.26.0.5"
DEST="/home/carlos/disco.sda1/backups"

#Equipo #1 del que hacer copias.
ORIG1="/home/prod/software"
FICH1=prod-$(date +%Y%m%d).tgz
HOST1=172.26.0.4

ORIG2="/home/tibco"
FICH2=tibco-$(date +%Y%m%d).tgz
HOST2=172.26.0.9

#ATENCIÓN: Añadir la clave pública de ssh para que no se pida clave durante el proceso.

#Backup1
#Crear el fichero, enviarlo y borrarlo del host remoto
ssh $HOST1 "tar cvfz /tmp/$FICH1 --exclude="/home/prod/soft/temp" --exclude="/home/prod/soft/logs" /home/prod/soft/"
ssh $HOST1 "scp /tmp/$FICH1 carlos@$LOCALHOST:$DEST"
ssh $HOST1 "rm /tmp/$FICH1"
FICH_ANTERIOR=prod-$(date +%Y%m%d --date '2 days ago').tgz
if [ -f /home/carlos/disco.sda1/backups/$FICH1 ]; then
rm /home/carlos/disco.sda1/backups/$FICH_ANTERIOR
fi

#Backup2
ssh tibco@$HOST2 "tar cvfz /tmp/$FICH2 /home/tibco/"
ssh tibco@$HOST2 "scp /tmp/$FICH2 carlos@$LOCALHOST:$DEST"
ssh tibco@$HOST2 "rm /tmp/$FICH2"
FICH_ANTERIOR=tibco-$(date +%Y%m%d --date '2 days ago').tgz
if [ -f /home/carlos/disco.sda1/backups/$FICH2 ]; then
rm /home/carlos/disco.sda1/backups/$FICH_ANTERIOR
fi

Y es necesario programar en el cron la ejecución de este script:
carlos@shirley:~$ crontab -e
# m h dom mon dow command
00 21 * * * /home/carlos/backups/misBackups.sh

así como darle permiso de ejecución al script:
carlos@shirley:~$ chmod 700 backups/misBackups.sh

h1

Acceder por SSH sin contraseña

15/11/2008

Hay veces que tenemos que entrar sucesivamente a una máquina por ssh, y se pierde mucho tiempo en el login. Para ello hay una utilidad de SSH que permite el logueo automático sin que ello signifique decremento de seguridad. Para ello se genera una clave pública y se exporta a la otra máquina, asumiendo el demonio de ssh a partir de entonces el acceso desde esa máquina, con ese usuario y con esa clave, como permitido:

carlos@host1:~$ ssh-keygen -t dsa
carlos@host1:~$ ssh-copy-id -i .ssh/id_dsa.pub pepito@host2

De esta manera el usuario carlos puede entrar en host2 como usuario «pepito» sin tener que teclear siempre la contraseña. Es una solución util para interacciones automática entre sistemas sin tener que almacenar la contraseña del usuario en texto plano, cron o demás.

A parte, es conveniente en sistemas compartidos modificar los permisos de acceso a los ficheros de claves generados para evitar malos usos:
carlos@WhenIGrewUp:~$ chmod 700 .ssh
carlos@WhenIGrewUp:~$ chmod 600 .ssh/authorized_keys
carlos@WhenIGrewUp:~$ chmod 600 .ssh/id_dsa
carlos@WhenIGrewUp:~$ chmod 744 .ssh/id_dsa.pub

En determinadas ocasiones no funciona esta solución. Para ello es conveniente unificar la versión de servidor ssh existente en los nodos. Se puede averiguar facilmente con la utilidad scanssh:

carlos@WhenIGrewUp:~$ sudo scanssh 172.26.9
172.26.0.9:22 SSH-2.0-OpenSSH_4.6p1 Debian-5ubuntu0.6
Effective host scan rate: 3.91 hosts/s

carlos@WhenIGrewUp:~$ sudo scanssh 172.26.5
172.26.0.5:22 SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1
Effective host scan rate: 1.52 hosts/s

carlos@shirley:~$ sudo scanssh 172.26.0.4
172.26.0.4:22 SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Effective host scan rate: 3.33 hosts/s

h1

Importar ficheros de correo (Mbox, PST, etc) en Gmail

13/11/2008

Para facilitar al Gran Hermano su labor podemos importar en nuestras cuentas de Gmail ese fichero de correo de cientos, a veces gigas, de correo que ya es inamovible de nuestro ordenador (y por tanto inaccesible desde otras localizaciones).

Para ello existe GML (GoogleMail Loader), un script en Python para procesar ficheros de correo en formato Mbox (Netscape, Mozilla Thunderbird), MailDIR (Qmail), MMDF (Mutt), NH (NHM) o Babyl (Emacs Rmail). El formato PST de Outlook se puede transformar facilmente con la herramienta «readPST» a formato Mbox.

GML se puede descargar desde aquí, donde también hay versión para Windows. Tras descomprimirlo, se ejecuta mediante el intérprete de Phyton:

carlos@WhenIGrewUp:~/gmlw$ python gmlw.py

La ejecución es muy sencilla, se muestra un GUI en el que hay que elegir la dirección de correo, el fichero almacén y el login en el SMTP correspondiente. Posteriormente el proceso comenzará incorporándose los correos en Gmail con la fecha y destinatarios originales. Lo único que cambiará será el remitente si utilizas el smtp de Gmail, que incluirá tu dirección de Gmail pero mantendrá el nombre del remitente verdadero para facilitar el seguimiento (límites de la seguridad frente al spam en los SMTP’s habituales). Es un proceso automático y lento.

En esta portabilidad de correos siempre es recomendable que antes de empezar que cambies tu contraseña de Gmail. Ésta ya es visible en la GUI y en la consola. Si utilizas como SMTP el de Gmail, viajará encriptada. Posteriormente puedes volver a establecer tu contraseña anterior.

Posibles problemas:

a) Al iniciar una importación, se produce el siguiente problema:
mBox (Netscape, Mozilla, Thunderbird) at location /home/carlos/tmp/Inbox Opened Successfully.
Done. Stats: 0 success 0 error 0 skipped.

El fichero no es un Mbox, pese a que el aviso indique que si.

b) El fichero está corrupto o no lo reconoce.
Se puede aplicar un programa de limpieza del fichero descargable aquí.

carlos@WhenIGrewUp:~/tmp$ python cleanmbox.py varios
Reading messages from 'varios'
Processing 55 messages... done.
Wrote to 'varios.cleaned'
Cleaned 1 mailbox(es).

c) Al ejecutarlo se produce el siguiente error:
carlos@WhenIGrewUp:~/gmlw$ python gmlw.py
Traceback (most recent call last):
File "gmlw.py", line 42, in
import os, sys, mailbox, smtplib, time, Pmw, webbrowser, tkFileDialog, re
ImportError: No module named Pmw

en caso de obtener ese error, se necesitará instalar la librería correspondiente:
carlos@WhenIGrewUp:~/gmlw$ apt-cache search pmw
python-pmw - Pmw -- Python MegaWidgets
python-pmw-doc - Pmw -- Python MegaWidgets
carlos@WhenIGrewUp:~/gmlw$ sudo apt-get install python-pmw

Al estar descontinuado GML, han surgido forks o modificaciones de este programa. A parte, hay otra opción como Gexodus.