Seite 1 von 1

Subprocess mit Putty Exceptions fangen von stderr

Verfasst: Montag 6. Februar 2012, 17:58
von zimbo
Hi

ich starte über Subprocess eine Putty Sitzung mittels Plink

Code: Alles auswählen

args_win = [
    "C:\Program Files\PuTTY\plink.exe ", "-l", "user",
    "-i", "user.ppk", "192.168.178.123" , "-agent", "c:/test.bat" 
    ]

def connect(args):
    try: 
        proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr=subprocess.PIPE)
        print proc.stderr.read()
    except ( Exception,OSError, ValueError), e: 
        print "An Error has been passed. %s" %e
        os._exit(0) 
        
    else: 
        return proc.stdout.read()
Das klappt soweit für Fehler wie z.B. der Pfad zu Plink ist falsch. Also Exceptions die von Subprocess ausgelöst werden.

Wenn Putty die Verbindung nicht herstellen kann gibt er " Unable to open connection: Host does not exist" aus.
Wie kann ich bei dieser Ausgabe von

Code: Alles auswählen

print proc.stderr.read()

eine Exception werfen?


Danke für die Mühe

Re: Subprocess mit Putty Exceptions fangen von stderr

Verfasst: Montag 6. Februar 2012, 18:02
von lunar
@zimbo: Nun, Du musst die Ausgabe eben mit der erwarteten Fehlermeldung vergleichen, und die entsprechende Ausnahme werfen. Ist sehe jetzt ehrlich gesagt nicht, wo Dein Problem ist? Wenn Du nicht weiß, wie man Ausnahmen auslöst, dann lies den entsprechenden Abschnitt im Tutorial.

Re: Subprocess mit Putty Exceptions fangen von stderr

Verfasst: Montag 6. Februar 2012, 18:10
von zimbo
Hi

Ich dachte halt es gäbe ein Möglichkeit, das Subprocess eine Exception selbst wirft wenn in stderr eine auftaucht

Code: Alles auswählen

stderr=subprocess.PIPE

Re: Subprocess mit Putty Exceptions fangen von stderr

Verfasst: Montag 6. Februar 2012, 18:56
von jerch
zimbo hat geschrieben:Ich dachte halt es gäbe ein Möglichkeit, das Subprocess eine Exception selbst wirft wenn in stderr eine auftaucht
Nein, diese Magie gibt es nicht. Woher sollte subprocess denn wissen, welche Fehler der Prozess generieren kann?
Du kannst die Ausgabe von STDERR interpretieren und entsprechende Exceptions generieren, wenn es das ist, was Du willst.

Re: Subprocess mit Putty Exceptions fangen von stderr

Verfasst: Montag 6. Februar 2012, 18:58
von zimbo
Ok
Danke euch zwei.
Dann muss ich das wohl so machen