Использование pexpect.popen_spawn.PopenSpawn () в Windows для запуска экземпляра telnet - PullRequest
0 голосов
/ 21 декабря 2018

Кому-нибудь повезло, запустив pexpect.popen_spawn.PopenSpawn () для запуска telnet в Windows?

Обратите внимание, что я уже включил функцию "Клиент Telnet" из Windows, так как могу запустить "telnet "из командной строки, просто набрав 'telnet' в командной строке.

import sys
import pexpect

from pexpect.popen_spawn import PopenSpawn

EXPECTED_PROMPT = "> "

def test():
    telnet_port=4444

    if sys.platform.startswith('win'):
        telnet = pexpect.popen_spawn.PopenSpawn(
            "C:\Windows\System32\telnet localhost {}".format(telnet_port),
            timeout=120,
            logfile=sys.stdout)
        telnet.expect(EXPECTED_PROMPT)

    return telnet

if __name__ == "__main__":
    telnet = test()

Когда я пытаюсь запустить приведенный выше код, я получаю следующую ошибку:

Traceback (most recent call last):
  File ".\test.py", line 26, in <module>
  telnet = test()
File ".\test.py", line 20, in test
  logfile=sys.stdout)
File "C:\Python27\lib\site-packages\pexpect\popen_spawn.py", line 53, in 
__init__
    self.proc = subprocess.Popen(cmd, **kwargs)
    File "C:\Python27\lib\subprocess.py", line 394, in __init__
    errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 644, in _execute_child
startupinfo)
WindowsError: [Error 5] Access is denied

1 Ответ

0 голосов
/ 21 декабря 2018

Обошел проблему с помощью plink: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Вместо

C:\Windows\System32\telnet localhost {}

Я использовал

plink.exe -telnet localhost -P {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...