25.4.07

Módulos de red para Python

No es raro volverse mico buscando el módulo necesario para ejecutar una tarea en red, como por ejemplo una funcionalidad de correo electrónico. He aquí un listado de los mismos y su función:

socket: Comunicaciones a bajo nivel, TCP, UDP...
cgi: Construcción de aplicaciones web server-side
urllib: Extrae información de urls, en texto plano
httplib,ftplib,nntplib: Módulos para web, ftp y news
poplib, imaplib, smtplib: Módulos para manejar los protocolos de correo
telnetlib, gopherlib: Módulos para protocolos telnet y ghopher
htmllib, sgmllib, xml.*: Parseadores de tags html, sgml y xml
xdrlib: Codifica datos en binario para transmisión
email.*: Parsea y compone correo con asunto, adjuntos, etc
rfc822: Parseador de cabeceras de correo electrónico
mhlib, mailbox: Procesa correos y mbox complejos
mimetools, mimify: Maneja cabeceras MIME
multifile: Lee mensajes con diferentes partes
uu, binhex, base64, binascii, quopri, email.*: Codifica y decodifica datos binarios para transmitirlos como texto
urlparse: Parseador de urls en componentes
SocketServer: Framework para servicios .NET
BaseHTTPServer: Implementación básica de servidor HTTP
simpleHTTPServer, CGIHTTPServer: Manejador de cabeceras HTTP

24.4.07

Herramientas de gestión de red

Linux es un sistema conocido por sus bondades en la gestión de redes. Un gran número de firewalls y routers de diversos fabricantes incorporan núcleos de Linux ligeros. Son muchas las aplicaciones de gestión de red disponibles, conocidas por el administrador de sistemas pero extrañas para el usuario de "a pie". Algunas de las más importantes son las siguientes:

/sbin/ifconfig y /sbin/route

Con esta conocida herramienta podemos definir los parámetros de red o consultarlos. Ejecutando ifconfig sin parámetros nos muestra la configuración de red. Veamos un ejemplo de configuración de los parámetros de una red:

ifconfig eth0 192.168.0.5 #Asigna esta dirección ip al interface eth0
route add default eth0 #Indica que eth0 es nuestro interface primario
route add default gw 192.168.0.1 #Asigna esta ip como puerta de enlace

/sbin/ip

Este comando nos proporciona los mismos detalles que las herramientas anteriores pero de forma más estructurada. Tiene dos formas básicas de ejecución:

ip addr #Nos muestra información sobre los adaptadores hardware
ip route #Muestra información sobre ip y las rutas de acceso



/usr/bin/mtr

Se trata de un traceroute avanzado repite la operación de envío de paquetes generando estadísticas. Ejemplo:

mtr www.debian.org

/usr/sbin/tcpdump

tcpdump es un conocido sniffer, muy útil para monitorizar la actividad del sistema. Ejemplo:

tcpdump -i eth0 port 80 #Esta instrucción monitoriza el puerto 80 desde el interface eth0

/usr/sbin/iptraf

iptraf nos indica exactamente lo que está ocurriendo en nuestra red, los protocolos que se están usando, las máquinas con las que se está estableciendo comunicación, etc.

23.4.07

Todo lo que querías saber sobre las X, pero no te atrevías a preguntar

Todos conocemos las X-Window, pero son pocos los que conocen más allá de cambiar de KDE a Gnome, toquetear xorg.conf para cambiar algunas cosas o cambiar el login manager.
En posts anteriores hemos visto como podemos iniciar una sesión gráfica en remoto, dando vida a equipos anticuados o centralizando los procesos en un servidor princial. Pero podemos llegar más lejos y explotar funcionalidades no tan conocidas de las X, como las siguientes:


Kiosk

Pongamos como ejemplo el clásico punto de información de una entidad, como una universidad, donde los usuarios pueden consultar datos mediante un interface. Realizar esto en Windows implica el programar el interface, deshabilitar las teclas especiales de Windows, eliminar las barras de Windows...
Utilizando las X en Linux podemos lanzar una aplicación sin tener un gestor gráfico que nos dibuje las ventanas, es decir, no podremos arrastrar ventanas, ni tendremos bordes, ni barritas de desplazamiento, ni combinaciones de teclas (excepto las del sistema), nada de nada. La forma de ejecutar una aplicación como Firefox sería:

X > /dev/null 2>&1 & exec firefox &

De querer disponer de un gestor de ventanas ligero como TWM sería:

X > /dev/null 2>&1 & twm & firefox &

Ahora nos quedaría eliminar ciertos botones a Firefox y combinaciones de teclas como Ctl+Alt+Backspace para tener un kiosk a prueba de crackers. En posts anteriores vimos como hacerlo:

· Inhabilitar funcionalidades de Firefox
· Desactivar combinaciones de teclas


Ejecución de aplicaciones en remoto de forma segura

Para ejecutar aplicaciones en remoto, nada mejor que hacerlo a través de SSH. Para ello, debemos habilitar esta funcionalidad en el servidor SSH, editando el fichero de configuración:

vi /etc/ssh/sshd_config

Al que deberemos añadir/cambiar la entrada X11Forwarding a yes



Ahora tan solo nos queda ejecutar la instrucción y dejar que ssh haga el resto:

ssh -X usuario@maquina aplicación

Ej:

ssh -X jose@srv.coruscant.com firefox

Recuperando datos de un disco duro defectuoso o un sistema corrupto

Pongámonos en un escenario fatalista, nuestro disco duro se ha estropeado hasta tal punto que tiene tantos sectores defectuosos que es imposible iniciar el equipo. Llegados hasta aquí, es momento de recuperar tantos datos como nos sea posible y, para ello, utilizaremos las herramientas que nos brinda nuestro sistema operativo favorito.

dd_rescue

dd_rescue es una variante de la conocida herramienta de Unix dd, orientada a la recuperación de datos. Comparada con dd, tiene dos diferencias importantes:

a. Al contrario que dd, cuando hay un error de lectura (por ejemplo un sector defectuoso), dd_rescue no aborta la transferencia, se limita a indicarnos el error en el log.
b. dd_rescue utiliza dos tamaños de bloques de datos durante la lectura, 16384 bytes si no encuentra errores y 512 bytes cuando los encuentra.

El proceder para recuperar los datos de un disco duro, sería el siguiente:

1. Asegurarnos de que tenemos espacio suficiente en disco para almacenar el backup (en su defecto podemos instalar otro disco duro y montarlo, montar una unidad de red, etc).

2. Volcar los datos del disco a un fichero, asegurándonos de que tenemos espacio libre suficiente en la unidad de destino (este proceso puede tardar mucho tiempo, dependiendo del tamaño de disco y de la cantidad de errores encontrados):

dd_rescue -A /dev/dispositivo_averiado /tmp/fichero_de_backup.iso

3. Opcional pero recomendable. Intentar checkear el sistema de ficheros del backup (si se dispone de la herramienta):

Para ext3: fsck.ext3 -p /tmp/fichero_de_backup.iso
Para reiserfs: reiserfsck --fix-fixable /tmp/fichero_de_backup.iso

4. Montamos el fichero con la copia de seguridad

mount -o loop,ro /tmp/fichero_de_backup.iso /mnt

5. Copiamos los datos utilizando los métodos tradicionales: cp, rsync, etc

18.4.07

Activando las teclas multimedia del teclado en KDE

KDE en la mayoría de los casos no se entera de que las teclas multimedia existen y, no es que sean muy útiles, pero da rabia que no funcionen, especialmente cuando dispones de un portátil con mando a distancia a lo Apple.
Mientras que en Gnome todo es coser y cantar en KDE necesitamos instalar el demonio lineakd. Veamos como realizar la configuración:

1) Instalar los paquetes necesarios

jose@coruscant:~$ apt-get install lineakd lineak-kdeplugins klineakconfig

2) Ejecutamos klineakconfig y, si nuestro teclado no está entre los ya soportados, establecemos una configuración personalizada



3) Una vez que hemos guardado la configuración, nos vamos al fichero de configuración creado y asignamos los valores de las teclas

jose@coruscant:~$ vi /home/jose/.lineak/lineakd.conf

En mi caso he asignado estos valores:

userdeffile = /home/jose/.lineak/lineakkb.def

Anterior = amarok -r
DVD = kmplayer
Music = amarok
Mute = EAK_MUTE
Play = amarok -t
Siguiente = amarok -f
Stop = amarok -s
VolDown = EAK_VOLDOWN
VolUp = EAK_VOLUP

4) Ponemos el demonio de lineakd en el arranque de KDE

jose@coruscant:~$ ln -s /usr/bin/lineakd /home/jose/.kde/Autostart/lineakd

5) Reiniciamos KDE y a disfrutar

17.4.07

Como solucionar el problema de las pantallas negras en Beryl

Los usuarios que estamos utilizando Beryl directamente con el driver de nVidia en ocasiones sufrimos el fastidioso problema de las pantallas en negro. Generalmente esto ocurre cuando maximizamos una ventana o lanzamos una aplicación nueva, se pone todo el cuerpo en negro y nos obliga a cambiar el gestor de ventanas o reiniciar la sesión.
La forma de solucionarlo o de minimizarlo en gran medida es cambiar dos parámetros en las opciones avanzadas de Beryl, tal y como se ve en la imagen:



Las opciones que debemos tocar son:

Opciones avanzadas -> Compuesto del recubrimiento de la ventana -> Usar CROW
Opciones avanzadas -> Ruta de renderización -> Copia

Con eso debería estar todo arreglado