Alternativa do Windows ao pexpect

Estou tentando escrever uma ferramenta multiplataforma que executa comandos específicos,espera determinada saída para verificação e envia determinada saída (como nome de usuário / senha) para autenticação.

No Unix, consegui programar uma ferramenta Python que usa o métodopexpect biblioteca (viapip install pexpect) Esse código funciona perfeitamente e é exatamente o que estou tentando fazer. Forneci um pequeno trecho do meu código para prova de conceito abaixo:

self.process = pexpect.spawn('/usr/bin/ctf', env={'HOME':expanduser('~')}, timeout=5)
self.process.expect(self.PROMPT)
self.process.sendline('connect to %s' % server)
sw = self.process.expect(['ERROR', 'Username:', 'Connected to (.*) as (.*)'])
if sw == 0:
    pass
elif sw == 1:
    asked_for_pw = self.process.expect([pexpect.TIMEOUT, 'Password:'])
    if not asked_for_pw:
        self.process.sendline(user)
        self.process.expect('Password:')
    self.process.sendline(passwd)
    success = self.process.expect(['Password:', self.PROMPT])
    if not success:
        self.process.close()
        raise CTFError('Invalid password')
elif sw == 2:
    self.server = self.process.match.groups()[0]
    self.user = self.process.match.groups()[1].strip()
else:
    info('Could not match any strings, trying to get server and user')
    self.server = self.process.match.groups()[0]
    self.user = self.process.match.groups()[1].strip()
info('Connected to %s as %s' % (self.server, self.user))

Tentei executar a mesma fonte no Windows (alterando/usr/bin/ctf parac:/ctf.exe) e recebo uma mensagem de erro:

Traceback (most recent call last):
  File ".git/hooks/commit-msg", line 49, in <module> with pyctf.CTFClient() as c:
  File "C:\git-hooktest\.git\hooks\pyctf.py", line 49, in __init__
    self.process = pexpect.spawn('c:/ctf.exe', env={'HOME':expanduser('~')}, timeout=5)
  AttributeError: 'module' object has no attribute 'spawn'

De acordo compexpect documentação:

pexpect.spawn epexpect.run() não estão disponíveis no Windows, pois contam com pseudoterminais do Unix (ptys). O código de plataforma cruzada não deve usá-los.

Isso me levou a procurar um equivalente do Windows. Eu tentei o popularwinpexpect projetoaqui e até uma versão mais recente (bifurcada)aqui, mas nenhum desses projetos parece funcionar. Eu uso o método:

self.process = winpexpect.winspawn('c:/ctf.exe', env={'HOME':expanduser('~')}, timeout=5)

apenas para sentar e assistir ao prompt de comando não fazer nada (parece que ele está preso dentro dowinspawn método). Fiquei me perguntando que outros meios eu poderia programar um script Python para interagir com a linha de comando e obter o mesmo efeito que pude no Unix? Se uma versão adequada do Windows funcionarpexpect script não existe, que outros meios eu poderia usar para fazer isso?

questionAnswers(0)

yourAnswerToTheQuestion