HomePage | ¿Qué es e-ghost? | Proyectos | GhostWiki | Herramientas | Documentos | Recetas | GhosTeca | Cursos | Debates | Reuniones | Enlaces | Prensa | Contacto | Humor | GhostLog | Alternativas Asignaturas| Euskaraz

Las Recetas de la Abuela (61 a 70)

En esta sección podremos ver los típicos truquillos que todo el mundo sabe pero nadie recuerda. Si quieres incluír una receta, infórmate en nuestra lista de correo cómo hacerlo. Si ya conoces cómo, introduce una nueva receta aquí.

Recetas, de la 61 a la 70


Receta_70

Título: Cómo ver vídeos en Google Video desde linux-ppc (extensible para otros propósitos)

Autor/a: Alvaro Uría (Fermat).

Los usuarios de GNU/Linux sobre PowerPC tenemos un problema muy curioso: no tenemos soporte para Flash (a día 2005/12/20).

Por ello, cada vez que nos pasan el enlace a un super-vídeo de Google Video nos tendríamos que joder... si no fuera porque los vídeos están codificados en un formato (.FLV) recodificable a MPEG-1 con el programa ffmpeg.

Y por último, y para que no tengamos que buscar la URL al vídeo de descarga a través del HTML donde está incrustado el Flash en cuestión, he escrito este programilla de nada, que limita la salida de texto por consola a unos pocos mensajes informativos.

Básicamente, para utilizar este script, tenemos que pasarle por parámetro la URL completa a la página desde donde veríamos el vídeo. A partir de aquí, el script busca la URL al vídeo, lo baja y lo recodifica a MPEG, para que podamos verlo con mplayer, por ejemplo. Si ocurre algún fallo durante este proceso, el script nos avisa.

Este script me imagino que será mejorable, así que si te apetece... hazlo ;-P (y si quieres puedes enviármelo a fermat en rigel.deusto.es)

Buen provecho :-)


Receta_69

Título: Soporte UTF-8 para VIm

Autor/a: Iker Sagasti Markina (aktor).

Esta receta explica como dar soporte a vim para codificación de caracteres UTF-8 (y así poder editar archivos con caracteres como ñ, €, tíldes, diéresis... que no están soportados por la codificación tradicional ISO-8859-1 ó ISO-8859-15).

Para ello basta con añadir al archivo de configuración /etc/vim/vimrc (para todos los usuarios en debian) o ~./vimrc (para un usuario en particular) la siguiente línea:

set fileencodings=utf-8,latin1


Receta_68

Título: Detectar desde el pc el cambio de dirección ip en el router y avisar por mail.

Autor/a: Fernando Urien, con la ayuda del e-ghost.

Se trata de un pequeño script que desde un ordenador de la red detecta si el router ha cambiado de dirección ip externa. Si la dirección ip ha cambiado, envía un mail al destinatario especificado. Es necesario disponer del programa mailx que es el que se usa para envíar el mail.

1) Creamos el fichero del script con el siguiente contenido. Asegurandonos de especificar bien la dirección de correo.

# !/bin/bash
DIRECCION_CORREO="miDireccionDeCorreo"
IPNEW=`wget www.whatismyip.com > /dev/null 2> /dev/null && cat index.html|grep "<TITLE>"|cut -d " " -f3|cut -d "<" -f1`
rm index.html
IPOLD=`cat direccion_ip`
echo "dirección IP antigua: $IPOLD"
echo "dirección IP nueva: $IPNEW"
if ?"$IPNEW"  = "$IPOLD"
then
echo "la direccion ip no ha cambiado"
else
echo "la direccion ip ha cambiado"
echo "$IPNEW" > direccion_ip
mailx $DIRECCION_CORREO  < direccion_ip
fi
echo "fin"

2) Le damos permiso de ejecución: mitico chmod a+x script (así, siendo un poco bruto con los permisos ;-)
3) Yo añadiría la tarea en el cron para que hiciera la comprobación cada 10 minutos (o el tiempo que se estime oportuno


Receta_67

Título: Renovar a mano el certificado SSL autofirmado de Apache.

Autor/a: Pablo Garaizar, del debian-apache-ssl-howto.

Es fácil, siguiendo estos pasos:

1) Creamos una nueva clave para el certificado y la protegemos:

 cd /etc/apache-ssl
 openssl genrsa -out txipinet.com.key 1024
 chmod 600 txipinet.com.key

2) Creamos el certificado, indicando el número de días en el que expirará (3650 = 10 años):

 openssl req -new -key txipinet.com.key -out txipinet.com.csr
 openssl x509 -req -days 3650 -in txipinet.com.csr -signkey txipinet.com.key -out  txipinet.com.crt

3) Cambiamos el certificado antiguo por el nuevo, y reiniciamos apache:

 mv apache.pem apache.pem.old
 cp txipinet.com.key apache.pem
 cat txipinet.com.crt >> apache.pem
 chmod 600 apache.pem
 /etc/init.d/apache-ssl restart

Receta_66

Título: Abrir una URL en una nueva pestaña de Mozilla Firefox, desde consola

Autor/a: Alvaro Uría

Si queremos abrir desde consola una URL, y más concretamente en una pestaña del Mozilla Firefox que tenemos ya abierto, ejecutaremos:

         ~$ firefox -remote "openURL("http://www.e-ghost.deusto.es/",new-tab)"

Esta opción ( new-tab ) está disponible en Firefox a partir de las versiones 1.0.1 y 1.1

Más información

Un ejemplo rápido: abriendo todas las URLs que tenemos en los bookmarks.

     #!/bin/sh
     dir=`ls ~/.mozilla/firefox/default.*/bookmarks.html`
     for a in $(lynx -dump file://$dir | sed -e 's/ \+[0-9]\+\. \(http.\+\)/\1/' | grep ^http)
      do
        firefox -remote "openURL("$a",new-tab)" || echo $a FALLÓ
      done

Receta_65

Título: Listar un directorio ordenado por tamaño

Autor/a: Alvaro Uría

Muchos de nosotros conocemos el comando sort, pero al igual que otros comandos como cut, tr, grep, sed, etc. no lo explotamos demasiado. Justo justo, lo utilizamos para ordenadar por la primera columna. Pues bien, para ordenar por tamaño de ficheros, utilizaremos el siguiente comando:

       ~$ ls -l | sort +4n

Tenemos que recordar que se empieza a contar por la columna 0 (la primera de todas). Así que el tamaño de fichero, que corresponde con la 5ª columna, será la número 4.

Si queremos, además, decirle un segundo orden a seguir, por ejemplo, el nombre de los ficheros, haremos,

       ~$ ls -l | sort +4n +7

Puesto que la 8ª columna contiene los nombres de ficheros, y se númera como 7.

Si queremos ordenarlo de mayor a menor tamaño, tendremos que invertir la salida del resultado, y por tanto, utilizaremos el flag -r aplicado a los comandos anteriores. Es decir,

       ~$ ls -l | sort +4nr

Nota: Autor/a: Jon Valdés

También podemos usar el propio comando ls, que tiene una opción para ordenar por tamaño :) Por ejemplo, el comando

       ~$ ls -Ssh

nos mostrará los archivos ordenados por tamaño, junto con su tamaño correspondiente. La 'h' es para que el tamaño nos salga en formato "humano" :P

Si queremos invertir el orden, ls tiene también una opción: el flag -r. Así, el siguiente comando nos mostraría los archivos con su tamaño, ordenados de menor a mayor:

       ~$ ls -Sshr

Nota: Autor/a: Alvaro Uría

Parece que el comando "sort" ha cambiado un poquito (a Feb08), y la mejor forma de llamarlo es (ambas valen):

       ~$ ls -l | sort -k 5 -nr
       ~$ ls -l | sort -nrk 5

Siendo "-k" el número de columna, empezando por el valor "1" (esta opción tiene posibilidades más avanzadas: man sort).


Receta_64

Título: Como guardar un flujo multimedia (streaming) en disco

Autor/a: Pablo Garaizar Sagarminaga

Cuando queremos grabarnos alguna charla/programa/video del neng que solo emiten en streaming o a través de un applet que nos redirige a una mms://recurso, podemos hacerlo así:

  mplayer mms://server/video.wmv -dumpfile video.raw -dumpstream

Receta_63

Título: Instalar Java en Ubuntu (Debian)

Autor/a: Eagle y Maski

Objetivo: Lograr una satisfactoria instalación de Java(TM) 2 SDK, que incluye la Virtual Machine.

Utilizaremos java-package que es un paquete de Debian que sirve para crear un paquete .deb a partir de los binarios de instalación. Basicamente sigue los pasos de Eagle pero de forma automática. Funciona con los Java Runtime Environments (JRE) y Java Development Kits (JDK) siguientes:

Pasos para la instalación:

 # sudo apt-get install fakeroot java-package java-common
 $ fakeroot make-jpkg jdk-1_5_0_03-linux-i586.bin
 # dpkg -i sun-j2sdk1.5_1.5.0+update03_i386.deb

Si estamos en Ubuntu (o puede que también en otros sistemas) tenemos que seleccionar la máquina de Sun en lugar de GIJ:

 # sudo update-alternatives --config java

Y elegir la que deseemos.

Eso es todo. Si alguien tiene que hacer alguna corrección, no tiene más que editar el wiki.

On egin diezaizuela!

Si el metodo anterior no os funcionara, a continuación se muestra una forma manual de hacerlo:

Como y donde lograr los programas necesarios:

        deb cdrom:Ubuntu 4.10 _Warty Warthog_ - Preview i386 Binary-1 (20041020)/ unstable main restricted
        deb http://archive.ubuntu.com/ubuntu warty main restricted
        deb-src http://archive.ubuntu.com/ubuntu warty main restricted
        ## Uncomment the following two lines to add software from the 'universe'
        ## repository.
        ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
        ## team, and may not be under a free licence. Please satisfy yourself as to
        ## your rights to use the software. Also, please note that software in
        ## universe WILL NOT receive any review or updates from the Ubuntu security
        ## team.
        ##deb http://archive.ubuntu.com/ubuntu warty universe
        ##deb-src http://archive.ubuntu.com/ubuntu warty universe
        deb http://security.ubuntu.com/ubuntu warty-security main restricted
        deb-src http://security.ubuntu.com/ubuntu warty-security main restricted

Hemos de modificar las líneas

        ##deb http://archive.ubuntu.com/ubuntu warty universe
        ##deb-src http://archive.ubuntu.com/ubuntu warty universe

Dejándolas tal que así

        deb http://archive.ubuntu.com/ubuntu warty universe
        deb-src http://archive.ubuntu.com/ubuntu warty universe

Guardamos los cambios y listos. Una vez instalado equivs podéis dejar el archivo como estaba.

Proceso de instalación:

        chmod a+x j2sdk-1_4_2_07-linux-i586.bin
        ./j2sdk-1_4_2_07-linux-i586.bin
        ln -s /usr/local/lib/j2sdk1.4.2_07 /usr/local/lib/jdk

Hasta aquí “fácil”, ahora llega la madre del cordero:

        cd /var/install/java
        mkdir pkg 
        cp /usr/share/doc/java-common/dummy-packages/*.control /var/install/java/pkg
        equivs-build java1-runtime-dummy.control
        equivs-build java2-compiler-dummy.control
        equivs-build java2-runtime-dummy.control
        equivs-build java-compiler-dummy.control
        equivs-build java-virtual-machine-dummy.control

        Nótese que los nombres pueden variar ligeramente de una instalación a otra (consultar los archivos copiados a var/install/java/pkg).
        También es importante que observemos las indicaciones del sistema ya que podrían surgir errores debido a que el orden citado arriba no sea el adecuado a su máquina (contratiempo menor y de fácil solución con el método prueba error).
        dpkg -i  nombrePaqueteCreado.deb

Ya casi hemos terminado, sólo nos falta hacer los enlaces para que todo funcione:

        update-alternatives --verbose --install /usr/bin/java java /usr/local/lib/jdk/bin/java 500
        update-alternatives --verbose --install --slave /usr/share/man/man1/java.1 java.1 /usr/local/lib/jdk/man/man1/java.1
        java -version
        Y el sistema nos contestará con algo similar a:
        java version "1.4.2_07"
        Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05)
        Java ?HotSpot(TM) Client VM (build 1.4.2_07-b05, mixed mode)

On egin diezaizuela!


Receta_62

Título: Configurar una tarjeta de red Wi-fi Intel(R)/Wireless 2100 (muchos portátiles centrino)

Autor/a: Cymo

Esta tarjeta es la que tienen la mayoría de los centrino antiguos (primera generación) y funcionan para 802.11b (11Mbps) Mi portátil en concreto es un Compaq presario x1005 (por si a alguien le sirve, que no es para fardar).

Intel no ha liberado las especificaciones hard de la tarjeta y "dicen" estar desarrollando un driver... Je je je.

Estos pasos son los que he seguido bajo Debian 3 testing (es decir, sarge), con kernel 2.6.3. El driver está hecho por voluntarios, se llama IPW2100, y no está soportado dentro del kernel (al menos, no que yo sepa).

0ºRequisitos:

1º Instalar las fuentes del driver y el hotplug:

 # apt-get install ipw2100-source hotplug

Esto además instalará otro paquete, module-assistant, que nos vendrá bien luego. También hay que instalar el hotplug que necesitaremos luego.

Si no tenemos debian, o no queremos usar apt-get ¿? podemos descargar el driver desde la página:http://ipw2100.sourceforge.net/

2º Comprobaciones de campo Es necesario tener sysfs montado para que esto funcione. Puedes comprobarlo

 # cat /etc/fstab | grep sysfs

Deberías tener una línea como esta:

 none            /sys            sysfs   defaults                0       0

3º Recompilar el kernel

Hay una receta (la número 13) que explica como hacerlo. Debería cambiarla porque los núcleos 2.6 son un poco distintos, pero... :P

Quizá no tengas que recompilar TODO el kernel si ya tenías las opciones que comentaremos activadas o, al menos las que no tienes, las puedes poner como módulos. Eso es cosa tuya. Yo lo pongo "para todo el mundo".

Recompilaremos el kernel, pero asegurándonos de activar todo esto primero:

Hay que activar el soporte para módulos. Existe una forma de empotrar el código del módulo dentro del kernel, de modo que se configure como una opción más del mismo. Yo no me he metido en esos fregados, si alguien se anima, puede mirar el documento en el que se basa esta receta, que allí lo mencionan: http://ipw2100.sourceforge.net/INSTALL

Para activar el soporte para módulos:

 Loadable module support -->
  Enable loadable module support

Hay que activar el soporte para wireless. En mi kernel está en:

 Device Drivers-->
    Networking Support
      Wireless Lan (non-hamradio) -->
       Wireless LAN drivers (non-hamradio) & Wireless Extensions

Si eres friki, puedes comprobarlo/modificarlo en el fichero .config, el "tag" es: CONFIG_NET_RADIO=y

Deberíamos activar la api criptográfica, puesto que los drivers querrán tirar de ella:

 Cryptographic Options -->
   ARC4 cipher algorithm (CONFIG_CRYPTO_ARC4)
 Library routines -->
   CRC32 (CONFIG_CRC32)

Si además queremos WPA:

 Cryptographic Options -->
  Michael MIC (CONFIG_CRYPTO_MICHAEL_MIC)
  AES (CONFIG_CRYPTO_AES_586)

Los drivers de la tarjeta necesitan cargar en la misma, el firmware o código. Tranquilo, que no vas a romper nada, esto es lo "normal": se cargan en la tarjeta siempre. Pero al apagar el ordenador, se va dicho firmware. No es permanente. Luego diremos como se hace esto, de momento... hay que añadir soporte para hotplug en el kernel:

 Device Drivers ->
  Generic Driver Options ->
    Hotplug firmware loading support

Vale, ahora toca recompilar el kernel.

 /usr/src/linux# make

Probablemente quieras poner el nuevo kernel, con algo como esto (depende de si usas lilo o grub, o de donde guardes el kernel, etc...)

 /usr/src/linux# cp arch/i386/boot/bzImage /vmlinuz
 lilo

4º: Bajar el firmware y configurarlo

Lo tenéis en: http://ipw2100.sourceforge.net/firmware.php Debéis tener una tarjeta Intel bla bla bla para poder descargarlo, y aceptar el acuerdo de licencia y bla bla bla. Si has llegado hasta aqui, podrás soportar una restricción más :(

Vale, con eso os bajáis un ficherito muy majo, algo como "ipw2100-fw-1.3.tgz". Hay que descomprimirlo en el directorio de firmware de hotplug (acordaos que hablamos de él antes). La ruta será normalmente esta:

 /usr/lib/hotplug/firmware/

Para corroborarlo, podéis mirar el fichero

 #less /etc/hotplug/firmware.agent

Cuando lo tengas claro:

 /usr/lib/hotplug/firmware# tar zxvfp RUTAipw2100-fw-1.3.tgz

Donde "RUTA" es la ruta donde está el fichero de marras que os habéis descargado.

5º: Compilar e instalar el nuevo módulo

 # cd /usr/src
 usr/src# tar zxvfp ipw2100-source.tar.gz

Nota: z = descomprimir gzip x = extraer v = verbose f = de un fichero p = permisos

Ahora la compilación en si:

 usr/src# module-assistant ipw2100

Este mágico programa compila e instala el módulo, el solito.

Nota: a mi me dio un error al compilar la versión 1.0.5 que es la que traía Debian (fichero ipw2100.c, línea 183, algo de una constante string...). En la página antes comentada, se puede descargar la 1.1.0, que está marcada como "estable". Debian sid, ahora mismo, trae esa versión... :P

Para solucionar el problema de compilación hice lo siguiente:

Solo si te da el mismo error que a mi :P

 /usr/src# mv ipw2100-source.tar.gz ipw2100-source.tar.gz.ceguera

Para que el module-assistant no me la liase Editar el fichero

 /usr/modules/ipw2100/driver/ipw2100.c

Comentar la línea 183:

 //MODULE_VERSION(DRV_VERSION);

Al parecer mi compilador no sabía que macro era MODULE_VERSION... ¿?

Fin de como corregí el error que me dio

6º: Probar el driver:

Crear las dependencias por si acaso

 # depmod -a

NOTA IMPORTANTE: El nombre del dispositivo wireless no es wlan0, sino eth1 (suponiendo que ya tengas en eth0 la ethernet... :P)

Por ejemplo yo he añadido a /etc/network/interfaces

 auto eth1
 iface eth1 inet static
          address        192.168.2.101
          netmask        255.255.255.0
          broadcast      192.168.2.255
          gateway        192.168.2.1

Reiniciar (por el tema del kernel, y tal)

 # reboot

En principio se habrá cargado solito, si no:

 # modprobe ipw2100

Probar con un ping

 # ping 192.168.2.1 (o lo que sea)

Receta_61

Título: Crear una lista de correo con una cuenta POP o IMAP.

Autor/a: Rubén Gómez (Yuki)

Llevaba bastante tiempo queriendo hacer una lista de correo para los amigos, ya que si queriamos mandar un mail a tod@s teníamos que escribir todas las cuentas, no olvidarnos de nadie y era un poco lio. Por lo que decidí investigar en cómo hacer una lista de correo facil y sencilla XD

Nota:

Nota para gmail:

Si usamos gmail tendremos que configurar la cuenta para que se pueda usar POP3 para coger los mails. Vamos a Settings -> Forwarding and POP -> Enable POP for all mail, y en "2. When messages are accessed with POP" ponemos "archive Gmail's copy" o "trash Gmail's copy" (la otra opción no vale).

Qué necesitamos?

Qué vamos a hacer?

Voy a explicar por encima cómo funcionan los emails en GNU/Linux (se aceptan correcciones ;-) Cuando cogemos un mail desde una cuenta de POP3 con fetchmail se lo pasa generalmente a /usr/sbin/sendmail, que en nuestro caso es Exim, para que este lo deje en /var/mail/yuki. Antes de que los deje, es el momento en que aprovecharemos para filtrar los mails con el propio Exim (si, Exim tiene posibilidad de filtrar los mails :-o). Algunos los dejaremos en ~/Mails/guardar , y otros se pasarán a procmail. Los que se pasen a procmail serán distribuidos de nuevo. Aprobechando el filtro de Exim lo que hacemos es no tener que pasar todos los mails a Procmail, por lo que puede ser más rapido, y no complicarnos con las reglas de filtrado de Procmail.

Empezamos:

1)Empezaremos con la configuración del Exim. Como root editamos /etc/exim/exim.conf y cambiamos la variable qualify_domain para que sea de este estilo

 qualify_domain = euskalnet.net

Con ello hacemos que los mails que salgan del ordenador lleven este dominio en vez de "yuki@hostname". (puede que haya otra manera de hacerlo, pero no lo sé :p)

2)Exim mira la configuración que tenemos en ~/.forward para ver qué tiene que hacer con los mails. Pondremos lo siguiente en este fichero:

 # Exim filter
 if error_message then finish endif
 if $header_to: contains "mi_correo@gmail.com"
 then
   pipe "$home/.lista_correo.sh"
 else
   save /home/yuki/Mails/guardar
  endif

Importante la primera linea "# Exim filter", que sirve para que Exim lo reconozca. Luego lo que hace es comprobar si el "To:" del mail contiene "mi_correo@gmail.com". Si es así se ejecutará /home/yuki/.lista_correo.sh, y si no se guardará en /home/yuki/Mails/guardar.

3)~/.lista_correo.sh es un shell script que contiene

 #!/bin/bash
 formail -i "Mail-Followup-To: mi_correo@gmail.com" | formail -i "Reply-to: mi_correo@gmail.com" | procmail ~/.procmail-mi_correo

Lo que hace es añadirle al mail que se le pase la cabecera "Mail-Followup-To" y "Reply-to", para que al responder el mail lo responda a la lista y no a la persona que lo ha mandado. Y despues se le pasará a procmail, que será ejecutado con el fichero de configuración ~/.procmail-mi_correo.

4)El fichero ~/.procmailrc-mi_correo contiene lo siguiente

 :0c
 ! merry@hobitton.com
 :0c
 ! pippin@hobitton.com
 :0c
 ! sam@hobitton.com
 :0
 ! bilbo@hobitton.com

Que lo que hace es mandar una copia del mail (por eso la 'c') a cada cuenta de correo que hemos puesto.

5)El fichero de configuración de fetchmail para que recoja los mails del servidor de correo. El fichero es ~/.fetchmailrc

 set logfile "/home/yuki/.fetchmail.log" # fichero de log
 set postmaster "yuki"
 set daemon 300 #para que se compruebe el correo cada 5 minutos
 #ejemplo para gmail
 poll pop.gmail.com with proto POP3 port 995
    user 'mi_correo@gmail.com' there with password 'password' options fetchall ssl
 #ejemplo para euskaltel
 poll correo.euskaltel.es with proto IMAP
    user 'mi_correo' there with password 'password'

La opción "daemon" es para que se ejecute como demonio cada 5 minutos, y "postmaster" es para enviar un mail con los fallos al usuario especificado.

6)Y por último, ejecutamos fetchmail:

 yuki@okinawa:~$ fetchmail
Valid XHTML 1.0! Valid CSS!
Page Execution took real: 0,297, user: 0,000, sys: 0,000 seconds