эмуляция терминала vt100 с помощью python / browser - PullRequest
2 голосов
/ 06 октября 2011

Я пытаюсь создать SSH-клиент для веб-браузера (аналогично ajaxterm ).Я создал Python-сервер, который использует Paramiko SSHClient.invoke_shell(term='vt100') и веб-сервер, который взаимодействует с внешним интерфейсом (HTML + AJAX).Система работает и отображает выходные данные, когда я посылаю команды через канал SSH, но выходные данные включают escape-последовательности VT100.

Если я правильно понимаю, что-либо, что я получаю из канала SSH, должно интерпретироваться как команды для окна терминала 24x80?Что означает, что escape-последовательности могут изменить цвет, очистить экран, удалить линии, изменить поведение линий ... (Я нашел хороший список здесь ) Что означает, что я не могу просто удалить их?

Я проверил источник Ajaxterm, но не смог понять, как можно использовать класс Terminal (чтобы я мог использовать его для своих целей).

Вопрос: какой самый простой способ интерпретировать поток вывода и правильно отобразить экран терминала в браузере?Другими словами, есть ли библиотека, которая анализирует вывод и сохраняет содержимое экрана для меня?

Если я неправильно понял внутреннюю работу терминалов, пожалуйста, дайте мне знать.У меня не было большого опыта с ними в прошлом.:)

1 Ответ

3 голосов
/ 06 октября 2011

Я пытался сделать то же самое несколько дней назад. Я не закончил это, но я нашел несколько библиотек эмулятора терминала Python.

Я выбираю pyte , который имеет чистый API и прост в использовании. Список других библиотек, выполняющих ту же работу, доступен в конце README Пайта.

...