Seite 1 von 1

subprocess / SSH / popen3

Verfasst: Montag 25. Juni 2007, 11:03
von flothebow
Servus Zusammen,

ich habe ein kleines Problem beim Zugriff auf die Standardfiledeskriptoren.
In meinem Programm soll eine SSH Verbindung aufgebaut werden und ein " /bin/sh ausgeführt werden. Diese soll später mit "Messages" gefüttert werden und mir den Output ausgeben!

Ich würde als erstes gerne prüfen ob der connect erfolgreich war, sprich der "stderr" leer ist. Hier entsteht jedoch das erste Problem. Da wenn ich einen "read" auf den stderr anwende dieser ja Blockierend ist!

Hier mal mein Code:

Code: Alles auswählen

def check_remote_ssh(paramter):
        
        print "Check remote SSH function started"
        host = "aragorn"
        shell = " /bin/sh"
        message = "id; exit"
        
        stdin,stdout,stderr = os.popen3('ssh ' + host + shell)
        stdout_nr = sys.stderr.fileno()
        
        #stderr pruefen
        error = stderr.read()
        if error != "":
            print error
        else: 
            pass
        
        stdin.write(message + "\n")
        stdin.flush()
                                 
        out = stdout.read()
        print out
Entferne ich die Prüfung auf den "stderr" funktioniert der Rest vom Code. Ist jedoch die Prüfung drin, bleibt das Programm an der .read() stehen!
Ich will eigentlich zu erst prüfen, ob ich eben eine Shell problemlos bekommen habe, denn wenn nicht soll des ganze Programm terminieren!

Ich habe es mal mit "subprocess" probiert, bin da aber nicht wirklich auf eine Lösung gekommen?

Hat da jemand eine Idee? Bin für jede Hilfe dankbar!
Gruss Flo

Verfasst: Montag 25. Juni 2007, 15:22
von veers
Nimm doch paramiko :)