#!/usr/bin/python import os import sys import dbus, dbus.mainloop.glib import gobject import glib mainloop = dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) sb = dbus.SystemBus() loop = gobject.MainLoop() nm = sb.get_object('org.freedesktop.NetworkManager', '/org/freedesktop/NetworkManager') nmi = dbus.Interface(nm, 'org.freedesktop.NetworkManager') dpi = dbus.Interface(nm, 'org.freedesktop.DBus.Properties') child = 0 args = ['ssh'] args.extend(sys.argv[1:]) def handler(state): global child, args if (state == 3): [child, n, n, n] = glib.spawn_async(args, flags = glib.SPAWN_CHILD_INHERITS_STDIN | glib.SPAWN_SEARCH_PATH) else: print "\033[2J\033[1;1H\033[0mWaiting for connection..." if child > 0: try: os.kill(child, 15) except OSError: pass child = 0 state = dpi.Get('org.freedesktop.NetworkManager', 'state') handler(state) nmi.connect_to_signal('StateChanged', handler) loop.run()