os.popen(), with time-out

The following piece of code checks whether a ssh root login is possible on a remote host.

class MyAlarm(Exception):
    pass

def alarm_handler(signum, frame):
    raise MyAlarm

def checkHostRootLogin( host): 
    ”'
    - returns True, if the host replies to a root login (executing 'hostname')
    - the time-out is 3 seconds
    ”'
    import subprocess 
    import signal

    signal.signal(signal.SIGALRM, alarm_handler)

    try: 
        #
        # the ssh authentication flags are needed for cronjobs
        #
        p = subprocess.Popen( ['ssh', "-x", "-o", "PubkeyAuthentication=yes",  "-o", 
                               "GSSAPIAuthentication=no", "root@%s" % host,  "hostname > /dev/null" ])
    except Exception as e:
        print( "checkHostRooLogin: exception occured", repr( e))
    signal.alarm( 3)

    try: 
        p.wait()
        signal.alarm(0)
    except MyAlarm:
        p.kill()
        p.wait()
        return False

    return True