subprocess / SSH / popen3

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
flothebow
User
Beiträge: 1
Registriert: Montag 25. Juni 2007, 10:45

Montag 25. Juni 2007, 11:03

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
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Montag 25. Juni 2007, 15:22

Nimm doch paramiko :)
Antworten