2016-12-16 18 views
2

Ich habe versucht, die Telnet-Verbindung mit pexpect.popen_spawn.PopenSpawn unter Windows zu öffnen, da pexpect.spawn nur auf Linux-Plattformen verfügbar ist. Ich habe das gleiche Python-Skript mit pexpect.spawn unter Linux getestet und es funktioniert gut. Ich kann Telnet jedoch nicht mit pexpect.popen_spawn.PopenSpawn unter Windows öffnen. Die Linie pexpect.popen_spawn.PopenSpawn("C:/Windows/System32/telnet.exe <IP> <PORT>") zeigt folgende FehlerWindowsError: [Fehler 2] Das System kann die in pexpect.popen_spawn.PopenSpawn angegebene Datei nicht finden

console = popen_spawn.PopenSpawn(mycommand) 
    File "C:\Python27\lib\site-packages\pexpect\popen_spawn.py", line 45, in __ini 
t__ 
    self.proc = subprocess.Popen(cmd, **kwargs) 
    File "C:\Python27\lib\subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "C:\Python27\lib\subprocess.py", line 958, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 

Jetzt ist telnet.exe am C zur Verfügung:/Windows/System32, und ich habe erfolgreich getestet den gleichen Befehl auf Eingabeaufforderung über Telnet. Was mache ich falsch? Irgendeine Idee? Ich benutze Python 2.7

+0

Drucken os.environ ['COMSPEC'] druckt als C: \ windows \ system32 \ cmd.exe –

Antwort

1

Pexpect scheint nicht die Backslashes in Pfaden mögen !! z.B. versuchen Sie dies:

mycommand = mycommand.replace("\\", "/") 
console = popen_spawn.PopenSpawn(mycommand) 

(nur Windows-Problem)

0

Betrachten wir einen absoluten Pfad für die Befehlsausführung verwendet wird. Um herauszufinden, wo sich Telnet befindet, führen Sie folgende in cmd.exe: wo Telnet und das sollte Ihnen den absoluten Pfad geben.

Dann tun einfach:

popen_spawn.PopenSpawn ('C:/Windows/System32/telnet ***')

0

ich eine Pull-Anforderung für pexpect geöffnet, das dieses Problem behebt. Bis es akzeptiert wird, verwenden Sie demented-hedgehog's solution.

Verwandte Themen