import sys
import dbus

def main():
    name = "org.freedesktop.DBus"
    bus = dbus.bus.BusConnection("tcp:host=192.168.2.4,port=6667")
    p = bus.get_object(name, "/" + name.replace(".", "/"))
    i = dbus.Interface(p, dbus_interface=name)

    for s in i.ListNames():
        print
        if str(s).find(":") != -1:
            print "skipped %s." % s
            continue
        if str(s).find("-") != -1:
            print "skipped %s." % s
            continue
        else:
            scan(str(s))

def scan(name):
    print "= %s =" % name
    bus = dbus.bus.BusConnection("tcp:host=192.168.2.4,port=6667")
    p = bus.get_object(name, "/" + name.replace(".", "/"))
    i = dbus.Interface(p, dbus_interface="org.freedesktop.DBus")

    print "== functions =="
    try:
        print p.Introspect()
    except:
        print "Introspect() failed."

    print "== objects =="
    try:
        for s in i.ListNames():
            print s
    except:
        print "ListNames() failed."

    print "== properties =="
    i = dbus.Interface(p, dbus_interface="org.freedesktop.DBus.Properties")
    try:
        results = i.GetAll()
        for s in results: 
            print s
    except:
        print "GetAll() failed."

if __name__ == "__main__":
    main()
