2016-04-19 5 views
1

Also schrieb ich folgendes nachdem die pexpect docs lesen:EOF Ausnahme während für ssh Passwort pexpect prompt

import pexpect 
from pexpect import popen_spawn 
child = popen_spawn.PopenSpawn("ssh -t -t [email protected]") 
child.expect('password:') 
child.sendline('pwd')  # Send the password 

Jetzt ist hier der Fehler, die ich bekomme:

Traceback (most recent call last): 
    File "C:\ssh_exp.py", line 4, in <module> 
    child.expect('password:') 
    File "C:\Python27\lib\site-packages\pexpect\spawnbase.py", line 315, in expect 
    timeout, searchwindowsize, async) 
    File "C:\Python27\lib\site-packages\pexpect\spawnbase.py", line 339, in expect_list 
    return exp.expect_loop(timeout) 
    File "C:\Python27\lib\site-packages\pexpect\expect.py", line 102, in expect_loop 
    return self.eof(e) 
    File "C:\Python27\lib\site-packages\pexpect\expect.py", line 49, in eof 
    raise EOF(msg) 
pexpect.exceptions.EOF: End Of File (EOF). 
<pexpect.popen_spawn.PopenSpawn object at 0x0000000002BA3F98> 

ich überprüft haben, dass die Konnektivität zu server1 korrekt ist und ssh nicht ohne Aufforderung zum Kennwort schließt. Gibt es etwas, was mir hier fehlt?

+0

Wie sieht die Passwortabfrage aus? – Jakuje

+0

Der Eingabeaufforderungstext ist 'root @ server1's Passwort:' – Erric

+0

Dies scheint ein häufiger Fehler bei der Verwendung von Pexpect in Windows. Ich debugge es gerade jetzt. – newlog

Antwort

1

Im Allgemeinen geschieht dies, wenn das, was Sie erwarten ("Passwort"), nicht in der Ausgabe gefunden wird.

Es gibt Situationen, in denen der Server den öffentlichen Schlüssel auf Ihrem Computer installiert hat und Sie "(ja/nein)" erwarten sollten. - wie die folgende Ausgabe.

Die Authentizität des Hosts kann nicht ermittelt werden. ECDSA-Schlüssel-Fingerabdruck ist x: xx: 35: ae: 1a: 2e: 69: e4: 4d: b4: 5e: 2d: 02: xx: f2: ed. Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein)?