Atentiendo señales dbus en python


Ya hablé sobre python y dbus hace un tiempo. Ahora vamos a aprender como atender a las señales que se mandan a través de este bus de escritorio. En el interesante tutorial de Pidgin tenemos un buen ejemplo. En este ejemplo se va a atender a la señal que emite pidgin cuando algún amigo se conecta. En el ejemplo de la web se lanza una ventana de notificación.

#!/usr/bin/env python

import dbus, gobject, dbus.glib

# Initiate a connection to the Session Bus
bus = dbus.SessionBus()

# Associate Pidgin's D-Bus interface with Python objects
obj = bus.get_object(
    "im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
pidgin = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")

# Create a global Pidgin buddy data cache
buddy_data_cache = {}

def onSignOn(bId):
  # Extract a Pidgin buddy's name and alias
  buddyAlias = pidgin.PurpleBuddyGetAlias(bId)
  buddyName = pidgin.PurpleBuddyGetName(bId)

  # Generate notification text based on the buddy's name and alias

  print "Se ha conectado: %s"%(buddyName)

# Bind the onSignOn function with Pidgin's BuddySignedOn event
bus.add_signal_receiver(onSignOn,
  dbus_interface="im.pidgin.purple.PurpleInterface",
  signal_name="BuddySignedOn")

# Start the main loop
gobject.MainLoop().run()

Como veis es bastante sencillo. Iniciamos un bus de sessión. Obtenemos el objeto de purple (el servicio de pidgin). Creamos una función (onSigOn) que será la que se lance cuando ocurra la señal. Y ya solo nos queda unir esta función con la señal con el método add_signal_receiver. ¿Sencillo no? Como mola python :P Para otro día dejo la parte final, crear un “servidor” que se conecte a dbus y atienda peticiones a través de el.



Chuletilla rápida de find


Sacado de:

  • Buscar y listar todos los ficheros que tengan la cadena ABC  en el directorio actual y su subdirectorios:
find ./ -name "*" -exec grep -H ABC {} \;
find ./ -type f -print | xargs grep -H "ABC" /dev/null
egrep -r ABC *
  • Buscar por extensión del directorio actual hacia abajo
find ./ -name "*.conf" -print
  • Buscar los ficheros de los usuarios mayores de 5Mb:
find /home -size +5000000c -print
  • Buscar todos los ficheros de un usuario (usando su UID) en todo el sistema:
find / -user 501 -print
  • Buscar todos los ficheros creados o actualizados en los últimos 5 minutos:
find / -cmin -5
  • Buscar todos los ficheros del usuario 20 y cambiarlos a 102
find / -group 20 -exec chown :102 {} \;
  • Buscar todos los ficheros ejecutables con suid y setgid (útil para buscar fallos de seguridad):
 find / \( -perm -4000 -o -perm -2000 \) -type f -exec ls -ldb {} \;
find / -type f -perm +6000 -ls
  • Buscar directorios en los que cualquiera puede escribir:
find / -perm -0002 -type d -print
  • Buscar ficheros en los que cualquiera puede escribir:
find / -perm -0002 -type f -print
find / -perm -2 ! -type l -ls
  • Buscar ficheros sin usuario:
 find / -nouser -o -nogroup -print
  • Buscar ficheros modificados en los últimos 2 días
find / -mtime 2 -o -ctime 2
  • Comparar 2 discos para ver si son iguales:
find / -path /proc -prune -o -path /new-disk -prune -o -xtype f -exec cmp {} /new-disk{} \;


Rescatando piadas


Aupa,

Mientras preparo las piadas/relatos de vacaciones he rescatado algunas piadas de mendiak (por si peta otra vez y se vuelven a perder datos) y las he puesto en el blog d ela CBP. De momento he rescatado las del puente de Mayo:

Puente de Mayo 2008: Norte de Madrid (El Vellon, Pedriza 1 y 2 y Patones)

Agur.



Vía “La Nueva”, con las pilas cargadas


Bon Giorno!

Ya estamos de vuelta de Dolomiti :) Y hemos venido a tope, ya os contaré mas, pero de momento os dejo con un nombre: Myriam. (no no he pillado con una Italia, ya me gustaría, como estaban algunas :P)

De momento aprovechando el buen estado de forma y mental, nos hemos quitado una espinita:

http://cordadabrazospartidos.es/blog/2008/08/1%C2%BA-espolon-de-atxarte-la-nueva/

Ciao.



Mudanza 2.0


Segunda mudanza (por eso el 2.0) del curro.

Abandonamos la Jakincueva 2.0 para ir a la Jakincueva 3.0 en pleno centro de Bilbo, cerquita de la Plaza Nueva, una zona muy animada. Se me ha juntado todo un poco y el estress previo a irme de vacaciones a sido interesante. Gracias a las compis del curro por ayudar con la mudanza. De momento solo hemos llevado todos los trastos a la nueva ofi, queda apañarla (luz, internet, cables,…) Pero eso será a la vuelta de vacatas, junto con unas fotos de la nueva Jakincueva :)



ferie nelle dolomiti


O lo que es lo mismo, vacaciones en los dolomitas. En unas horitas (a las 4AM del mañana día 1) salimos hacia alli. 1500km, 14h de coche (ja, ya serán 20h). Algo de estress previo y la furgoneta de ga (gañoneta) a reventar de comida, trastos e ilusiones. Esperemos poder escribir algo desde allí.



Como asignar nombres de interfaz a las tarjetas de red en función de la MAC


Otro post/notamental. Cuando tenemos en una maquina GNU/Linux varias tarjetas de red (o cambiamos alguna) no siempre tienen el nombre de dispositivo (eth0, eth1,…) que esperamos/queremos (un caso típico es el de la wifi de los portatiles, que en algunos aparece como eth0).

Antiguamente esto se solucionaba editando el fichero /etc/iftab y asociando la MAC de la tarjeta de red con un nombre de dispositivo. Pero ahora hay que hacerlo a traves de udev, editando el fichero
/etc/udev/rules.d/70-persistent-net.rules y en el editamos/añadimos entradas del estilo:

SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:1d:XX:XX:XX:XX”, ATTR{type}==”1″, NAME=”eth0″



Como liga un geek


http://www.geekets.com/2008/07/09/un-geek-ligando/



2 notas sobre awk


Para que no se me olvide:

Cambiar el elemento separador de campos

FS=”LOQUESEA”

Concatenar un comando del sistemas para que awk manipule su salida

BEGIN { “comando” | getline; blablabla }

Todo junto en un ejemplo

Como obtener el ultimo directorio de un path completo desde donde estamos trabajando:

dir=`awk ‘BEGIN { FS=”/” ; “pwd” | getline ; print $NF; }’`

Tengo que usar mas awk.



Dell XPS M1330


Llevaba este articulo mucho en la nevera y es hora de soltarlo: Tengo nuevo portátil! La verdad es que mi viejo portatil (powerbook alu 15″ de cuando los macs eran ppc) aun funciona a la perfección, pero el mundo moderno (osea, mi trabajo) me pide más potencia, una arquitectura x86 y más autonomía (batería y más cómodo de llevar). Así que mirando, me gusto el modelo XPS 1330 de Dell. Es una joyita:

  • 13″ pulgadas.
  • Aluminio y magnesio en la carcasa y chasis
  • Pantalla white led, mas fina y menos consumo
  • Core 2 Duo. Bienvenida vitrualización!
  • 4Gb de ram (está el precio de la RAM por los suelos)

Llevo con el algunos meses (desde semana santa), y creo que es hora de comentar las impresiones y los truquitos que he acumulado en este tiempo.

(more…)

Next Page »

moeblog is proudly powered by WordPress and themed by Mukkamu