Python Pexpect PopenSpawn在Windows上不工作

Python Pexpect PopenSpawn在Windows上不工作,python,pexpect,Python,Pexpect,我目前正在尝试使用pexpect来控制到我的raspberry pi的简单ssh连接,我将它用于某些智能家居控制 我刚刚开始使用它,我在《暴力蟒蛇》一书的帮助下学习它 我在Windows上,了解到pexpect.spawn对象在Windows上不可用。在文档中,有人说我必须使用PopenSpawn。我有一个简单的脚本: import traceback import pexpect from pexpect.popen_spawn import PopenSpawn try: chil

我目前正在尝试使用pexpect来控制到我的raspberry pi的简单ssh连接,我将它用于某些智能家居控制

我刚刚开始使用它,我在《暴力蟒蛇》一书的帮助下学习它

我在Windows上,了解到
pexpect.spawn
对象在Windows上不可用。在文档中,有人说我必须使用
PopenSpawn
。我有一个简单的脚本:

import traceback
import pexpect
from pexpect.popen_spawn import PopenSpawn

try:
    child = pexpect.popen_spawn.PopenSpawn('ssh pi@192.168.178.34')
    a = child.expect(['password:', 'The authenticity of host'], timeout=300, async=True)
    if a == 0:
        child.sendline('123456789')
        print('this ip has exists in know_host files!')
    if a == 1:
        print('this ip will be added to know_host files!')
        child.sendline('yes')
        child.expect('password:')
        child.sendline('raspberry')
        # send test
        child.sendline("echo TestMessage")
        child.interact()
except pexpect.EOF:
    traceback.print_exc()
这总是给我这个错误:

Traceback (most recent call last):
  File "D:/CENSORED/pexpect-master/sshforpi2.py", line 6, in <module>
    child = pexpect.popen_spawn.PopenSpawn('ssh pi@192.168.178.34')
  File "D:/CENSORED/pexpect-master\pexpect\popen_spawn.py", line 46, in __init__
    self.proc = subprocess.Popen(cmd, **kwargs)
  File "C:\Python34\lib\subprocess.py", line 859, in __init__
    restore_signals, start_new_session)
  File "C:\Python34\lib\subprocess.py", line 1112, in _execute_child
    startupinfo)
FileNotFoundError: [WinError 2] The system can't find the given file.
回溯(最近一次呼叫最后一次):
文件“D:/censtered/pexpect master/sshforpi2.py”,第6行,在
child=pexpect.popen\u spawn.PopenSpawn('sshpi@192.168.178.34')
文件“D:/censtered/pexpect master\pexpect\popen_spawn.py”,第46行,在_init中__
self.proc=subprocess.Popen(cmd,**kwargs)
文件“C:\Python34\lib\subprocess.py”,第859行,在\uuu init中__
恢复信号,启动新会话)
文件“C:\Python34\lib\subprocess.py”,第1112行,在执行子进程中
startupinfo)
FileNotFoundError:[WinError 2]系统找不到给定的文件。

我发现guy问了同样的问题——他还没有得到答案。

SSH不是windows命令的原生版本。在下面的行映射命令中,指向位于C:\Windows\System32\OpenSSH中的ssh。OpenSSH现在添加到System32中的Windows 10中。试试这个,我想它可能对你有用

child = pexpect.popen_spawn.PopenSpawn('ssh pi@192.168.178.34')
试试这个

command = 'C:\Windows\system32\OpenSSH\ssh.exe pi@192.168.178.34'
child = pexpect.popen_spawn.PopenSpawn(command)
更好的是,您可以为Linux安装新的Windows子系统并使用它运行脚本

看起来“ssh”不在您的路径中。