Subprocess mit Putty Exceptions fangen von stderr

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
zimbo
User
Beiträge: 16
Registriert: Dienstag 6. Dezember 2011, 17:38

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
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.
zimbo
User
Beiträge: 16
Registriert: Dienstag 6. Dezember 2011, 17:38

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
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

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.
zimbo
User
Beiträge: 16
Registriert: Dienstag 6. Dezember 2011, 17:38

Ok
Danke euch zwei.
Dann muss ich das wohl so machen
Antworten