El pesebre geek del blog


Tengo costumbre de bromear un poco con los pesebres cada año y para no perder la costumbre, el de este año no podia ser más geek. El del año pasado esta por este enlace

Forzando a cerrar procesos cuyas conexiones estan en estado CLOSE

En ciertas ocasiones, he tenido que cancelar las conexiones del servicio apt-cacher Debian que se me vuelve cuello de botella al saturar la limitante de uso de las interfaces de red.

Aunque en otra oportunidades lo he usado para cancelar las conexiones en un conocido simulador de router Cisco.

El comando sería algo así

#!/bin/bash
netstat -plant | grep CLOSE | awk {'print $7'} | sed "s/[^0-9]//g" | xargs kill -9

Yaourt y de como me toca actualizar

Desde que me mude a ArchLinux, no he tenido en problemas de aprender cosas nuevas. A raíz de la necesidad de usar paquetes en AUR, he tenido siempre la dificultad de verificar/obtener versiones nuevas tras un proxy. Normalmente, la instalación si me funciona, pero no al momento del chequeo de updates. La cosa a la que me refiero es que no me funciona muchas veces este comando yaourt -Su --aur Según Internet, la variable de entorno es fundamental, pero igual. No me ha funcionado,

Así que me resolví hacer dos scripts para al menos , de forma visual dar con los paquetes desactualizados.

El primero en bash sería algo así


#! /bin/bash

yaourt -Q | grep local | awk 'BEGIN { FS="/"} {print $2 }' | awk '{print $1}' > AUR

Las dos primeras partes busca los paquetes que están instalados y filtra los que fueron de forma local, obteniendo resultados de esta forma


...
local/codecs-all 20071007-4
local/ddcxinfo-arch 0.8-2
local/etherwake 1.09-3
local/go-openoffice.org-es 3.2.1.3-2
...


Pero como lo que requiero es el nombre del paquete, hago un filtro usando como separador el carácter "/" obteniendo algo asi


...
codecs-all 20071007-4
ddcxinfo-arch 0.8-2
etherwake 1.09-3
go-openoffice.org-es 3.2.1.3-2
...


Luego como esta separado el nombre de la versión con un espacio, el nombre seria una columna , awk '{print $1}' me daría sólo esa columna



...
codecs-all
ddcxinfo-arch
etherwake
go-openoffice.org-es
...


AL final decidí guardar el resultado en un archivo, de nombre AUR.


El segundo script en Perl sería para que por cada linea en el archivo AUR me busque en yaourt. Sería algo así

#!/usr/bin/perl
open (ARCH, "AUR");

foreach $linea (<ARCH>) {
chomp($linea);
system("yaourt -Ss ".$linea );
}

close(ARCH);

Al hacer esto , el resultado que se muestra es que el paquete desactualizado aparece marcado en rojo.

He acá mi drama.

Añadiendo un TimeStamp a 'history'

Ordinariamente el comando 'history ' indica, el número de comando y el comando ejecutado. Sin embargo , no es suficiente en muchos casos,(en el desarrollo de software por un equipo ). Es útil ver cuando adicionalmente vemos las fechas de ejecución del comando.

Si usamos

export HISTTIMEFORMAT="%d/%m/%y %T "


Obtendríamos un resultado similar a este :
.
.
.
421 20/04/10 21:10:27 cp -vRf * ../ubuntu
422 20/04/10 21:10:27 cd ..
423 20/04/10 21:10:27 mount
424 20/04/10 21:10:27 umount /var/www/tmp
425 20/04/10 21:10:27 ll
426 20/04/10 21:10:27 cd ubuntu/
427 20/04/10 21:10:27 l
428 20/04/10 21:10:27 cd install/
429 20/04/10 21:10:27 ll
430 20/04/10 21:10:27 cd netboot/
431 20/04/10 21:10:27 ll
432 20/04/10 21:10:27 ll /var/lib/tftpboot/
433 20/04/10 21:10:27 cp -Rf * /var/lib/tftpboot/
434 20/04/10 21:10:27 ll /var/lib/tftpboot/
435 20/04/10 21:10:27 cp -Rf * /var/lib/tftpboot/ubuntu-installer/
436 20/04/10 21:10:27 ll
437 20/04/10 21:10:27 ll ubuntu-installer/
438 20/04/10 21:10:27 cd /var/lib/tftpboot/
.
.
.
.

Para hacer los cambios permanentes puede añadirse el comando anterior en tu .bashrc

echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' | tee -a ~/.bashrc

Usando inotifywatch


A veces me hacen preguntas extrañas. Créeme, no me esperaba algo así.

"¿Existe algo para ver los cambios en un filesystem?"

Ese día, respondí que no. Pero me sonaba. Pensé: "Cambios en filesystem, es como cambios en inodos." Bueno, ni modo, busqué en la red y me encontré con esta herramienta muy genial.

Se llama inotifywatch, forma parte del paquete inotify-tools y usa el mecanismo de seguimientos de de eventos relacionados a un archivo u a algún directorio (ver man 7 inotify) del kernel. Lo he vistos en varias distros.

Un ejemplo de su uso


[user@pc ~]$ inotifywatch -v -e access -e modify -t 15 -r ~
Establishing watches...
Setting up watch(es) on /home/user
OK, /home/user is now being watched.
Total of 2024 watches.
Finished establishing watches, now collecting statistics.
Will listen for events for 15 seconds.
total access modify filename
219 219 0 /home/user/Desktop/
8 0 8 /home/user/.gconfd/

En el ejemplo anterior, indica los eventos de acceso y modificación en un tiempo de 15 de forma recursiva en el directorio personal del usuario 'user'

Esta herramienta puede detectar casi cualquier operación sobre algún archivo u directorio, por lo que se puede usar en diversos escenarios, desde por ejemplo, ver que cantidad de archivos temporales crea un proceso u ver que archivo es muy descargado en su servidor web sin esperar a un crotab actualize sus estadísticas, por mencionar alguno.

Enlazando Twitter con Rhythmbox en ArchLinux/Debian/Ubuntu


Advertencia: Estas instrucciones sólo sirve para menor de Gnome 3.0

Desde hace meses he estado usando Arch Linux y en la medida de lo posible he estado adaptando lo que tenía antes instalado en Ubuntu. No hace días, vi que hay cambios para instalar el plugin para mostrar en Twitter lo que escuchas en Rhythmbox , por lo que origina este nuevo post, que, enfocado a Arch Linux, mencionare como seria hacerlo en Debian y derivados.

Lo primero es instalar el wrapper para entender la Api de Twitter , cuyo paquete es llamado python-twitter . En caso de Ubuntu Jaunty u Debian Lenny, la versión requerida es 0.6.1 que no esta en repositorio, por lo que ademas de instalar python-simplejson, lo bajarías de la página del proyecto en Google Code

Hay dos formas de obtener el plugin . La obtención del código del plugin fue movido de un repositorio SVN a un repositorio GIT por lo que podemos usarlo vía git

git clone git://github.com/dragon3/rhythmbox-twitter-plugin.git

En caso de no tener instalado el paquete git, se puede disponer del comprimido en el URL http://github.com/dragon3/rhythmbox-twitter-plugin/tarball/master

Luego de obtenido el código se accede al directorio y ejecutamos en consola como root

make install


Si hemos hecho todo bien, debería de aparecer entre los complementos en Rhythmbox "Twitter notifier"



Así debería de verse después de instalado el plugin

En Twitter se algo verá así

Recomendaciones
  • Si posees muchas canciones, trata que sean del mismo álbum y artista, algunos followers que tengas puede ver como spam tus updates que no sigan estas condiciones.
  • Si posees canciones sin artista y sin saber de que álbum pertenecen , mejor no actives el plugin pues se pueden verse así.