Как отправить команду telnetlib control +] в python? - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь отправить команду control + ] в python, используя библиотеку telnetlib.

В настоящее время я делаю:

tn.write('^]')

, а также

tn.write('\x1D') 

который я получил от http://donsnotes.com/tech/charsets/ascii.html

Для ввода control-A я использую tn.write('\x01'), и он работает, поэтому я запутался, почему tn.write('\x1D') не работает для control-].

Спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Команда ^] фактически не отправляется на сервер. Это команда для клиента telnet. Когда вы запускаете программу telnet (совсем не связанную с python), вы видите:

~$ telnet localhost 2050
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Это означает, что ^] является escape-символом. Это способ заставить локальную программу telnet выйти из режима ввода, который отправляет все на сервер, и войти в режим ввода, который принимает локальные команды. Когда вы набираете ^], в этом случае программа telnet не отправит его на сервер, а просто изменит режим ввода.

Поскольку вы подключаетесь по протоколу telnet напрямую к серверу, а не используете программу telnet , отправлять ^].

не имеет смысла.
0 голосов
/ 05 июля 2018

ctrl-] не может быть отправлено по проводам. Вы должны использовать, скажем, синоним для него как close()

Для дальнейшего чтения см. Точный ответ здесь: https://mail.python.org/pipermail/python-list/2012-December/636929.html

...