Как отправить ключ F2 на удаленный хост с помощью Python - PullRequest
4 голосов
/ 14 июня 2010

Я должен отправить ключ F2 на хост telnet. Как отправить его, используя python ... используя getch() Я обнаружил, что символ < используется для клавиши F2 , но при отправке > он не работает Я думаю, что есть способ отправить специальные функциональные клавиши, но я не могу его найти. Если кто-то знает, пожалуйста, помогите мне. Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 14 июня 2010

Расширенные ключи (не алфавитно-цифровые или символьные) состоят из последовательности отдельных символов, причем последовательность зависит от терминала, который вы указали используемому серверу telnet.Вам нужно будет отправить все символы в последовательности, чтобы она заработала.Здесь, используя od -c <<< ' Ctrl V F2 ', я смог увидеть последовательность \x1b0Q с терминалом xterm.

3 голосов
/ 14 июня 2010

Во-первых, как указал Игнасио , вы должны определить точную последовательность символов, отправляемых F2. На моей машине это ^[OQ, где ^[ обозначает escape-символ с кодом ASCII 27. Это идентично тому, что он получил. Вы должны отправить точную ту же последовательность байтов через telnet. Предполагая, что правильная последовательность - та, которую я показал выше, она сводится к следующему:

import telnetlib

tn = telnetlib.Telnet(HOST, PORT)
tn.write(idpass)
tn.write("\x1b0Q")
tn.close()

В случае, если вам интересно, \x1b обозначает символ, имеющий код ASCII 27, так как 27 в шестнадцатеричном является 1b. Это работает на моей машине (проверено простым эхо-сервером на принимающей стороне), поэтому, если оно не работает для вас, это означает, что удаленный конец ожидает чего-то другого вместо нажатия клавиши F2.

...