2016-08-07 69 views
-1

Ich versuche ein Python-Skript (mit einer Schleife) zu verbinden in SSH, es funktioniert, wenn alles gut ist (Passwort und Route), aber aufhören, wenn es nicht funktioniert (falsches Passwort oder keine Routen zu Host). Hier ist der wichtige Teil des Skripts, wie kann ich kontrollieren, ob alles funktioniert?Python Skript Pexpect SSH

connexion = pexpect.spawn("ssh -o StrictHostKeyChecking=no "+user+"@" + ip) 
index=connexion.expect(':') 
connexion.sendline(password + "\r") 
connexion.expect('>') 
connexion.sendline('show clock \r') 
connexion.expect('>') 
connexion.sendline('exit') 
connexion.close() 

ich den Fehler:

Traceback (most recent call last): 
File "script.py", line 21, in <module> 
connexion.expect('>') 
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1418, in expect 
timeout, searchwindowsize) 
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1433, in expect_list 
timeout, searchwindowsize) 
File "/usr/lib/python2.7/dist-packages/pexpect/__init__.py", line 1521, in expect_loop 
raise EOF(str(err) + '\n' + str(self)) 
pexpect.EOF: End Of File (EOF). Exception style platform. 
<pexpect.spawn object at 0x7fcfeecee750> 
version: 3.1 
command: /usr/bin/ssh 
args: ['/usr/bin/ssh', '-o', 'StrictHostKeyChecking=no', '[email protected]'] 
searcher: <pexpect.searcher_re object at 0x7fcfeecee850> 
buffer (last 100 chars): '' 
before (last 100 chars): ' connect to host 10.9.128.5 port 22: No route to host\r\r\npassword\r\n\r\n' 

Dank

+0

Was sind die Fehler, die Sie bekommen? Denn Sie könnten Ihren Code möglicherweise in einen try-Block setzen und den Fehler abfangen, wenn das Passwort falsch ist, und den Benutzer erneut nach dem Passwort fragen. Können Sie einige Beispiele Ihres Codes, wo es fehlschlägt, sowie die vollständige Fehlerrückverfolgung posten? – Harrison

+0

Traceback (jüngste Aufforderung zuletzt): File "script.py", Zeile 21, in connexion.expect ('>') File „/usr/lib/python2.7/dist-packages/pexpect/__init__ .py ", Zeile 1418, in expect timeout, searchwindowsize) Datei" /usr/lib/python2.7/dist-packages/pexpect/__init__.py ", Zeile 1433, in expect_list timeout, searchwindowsize) Datei" /usr/lib/python2.7/dist-packages/pexpect/__init__.py ", Zeile 1521, in expect_loop Erhöhe EOF (str (err) + '\ n' + str (self)) pexpect.EOF: Ende Datei (EOF). Ausnahmestil-Plattform 77140B

+0

Können Sie diesen Fehler zu Ihrem ursprünglichen Beitrag hinzufügen und formatieren Sie es bitte so, dass es leicht lesbar ist? – Harrison

Antwort

0

Das Problem ist, dass der Host 10.9.128.5 im Moment nicht erreichbar war. ssh hat diese Nachricht zurückgegeben:

connect to host 10.9.128.5 port 22: No route to host 

und nicht das, was erwartet wurde.

0

Sie erhalten eine Ausnahme, die korrekt behandelt werden muss. Unten finden Sie einen Code, den Sie als Beispiel verwenden können, um die Ausnahme zu übergeben und zu protokollieren.

def ignore_exception_out(conn, text, timeout=10): 
     try: 
      conn.expect(text, timeout) 
     except Exception as e: 
      logging.log("Exception reached {0}".format(e)) 
      pass