Написание псевдотерминала на python для веб-терминала Ubuntu - PullRequest
2 голосов
/ 31 октября 2011

Я заинтересован в написании веб-терминала, который может выполнять и автозаполнять команды в терминале Ubuntu.

Я возился с Anyterm http://www.anyterm.org, который использует ROTE: "простую C-библиотеку для«Эмуляция терминала VT102» на бэкэнд-сервере и javascript / html для пользовательского интерфейса терминала.Проблема заключалась в том, что я не мог открыть два терминала в одном и том же окне.

После некоторых исследований я решил написать терминальный сервер / псевдотерминал (в зависимости от того, какая терминология правильная) в Python, которыйможет:

  • выполнять команды в терминале Ubuntu (например, ls, grep и т. д.)
  • автозаполнять команды (например, $ gedi (нажатая вкладка) $ gedit)
  • и имеют несколько экземпляров терминала, открытых одновременно (при вводе ls в одном, другой терминал не распознает ls как последнюю команду после своего другого сеанса терминала)

У меня естьобнаружил, что с модулем pty python я могу написать псевдотерминал, однако я новичок в python и даже не смог заставить пример на этой странице работать.

Я планирую, чтобы скрипт Python обслуживал http-сервер с терминалом javascript / html, который я бы написал (это было основной причиной, по которой я хотел выбрать python для этого проекта).Затем я хочу позволить веб-интерфейсу общаться с «сервером» внутреннего терминала и получать результаты обратно в веб-интерфейс.

Если бы вы могли указать мне правильное направление, возможно, скажите мне, какой модуль мне следует использовать -if not pty-, и дайте мне несколько идей о том, как написать сервер псевдотерминала python, я был бы признателен.

Я знаю javascript / php и знаком с сценариями bash. На этом этапе я мог бы использовать бэкэнд-сервер на основе C или Python, подходит ли python для этого проекта?

Примечание: я планируюнаписать пользовательский интерфейс, который использует ajax post или методы get для получения вывода терминала с внутреннего сервера.

Ответы [ 2 ]

4 голосов
/ 31 октября 2011

Сначала вам нужно изучить основную терминологию. shell - это программа, которая интерпретирует введенные вами командные строки, такие как grep "foo" abc.txt . Эмулятор терминала - это программа, имитирующая терминал . Терминал - это устройство с дисплеем и клавиатурой, использовался в 1970-х годах для доступа к мейнфрейму UNIX. A псевдотерминал , pty - это узел устройства, поддерживающий эмуляторы терминала, в отличие от, например, «реальных терминальных устройств» (tty1).

Теперь вы можете создать оболочку , которая будет работать в терминале вместо bash или dash; или вы можете создать эмулятор терминала , который будет использоваться через Интернет; Вы можете запустить любую существующую оболочку в нем. Оба являются сложными задачами сами по себе.

Документация Python не очень полезна, я рекомендую начать с поиска вначале большего количества этих понятий - и не только ссылок на Python, но и C, C ++.

И, наконец, если вы хотите запустить Emacs или nano или другую продвинутую программу в вашей оболочке, вы хотите использовать модуль pty.

0 голосов
/ 31 октября 2011

У меня были друзья, которые делали что-то подобное, но он делал это через чат Google, я не знаю, насколько это будет полезно, но взгляните на xmpp (python modual), может быть, это может помочь вам, или даже здесь ссылка на его исходный код: chatIO Я не работал с ним над этим, но ему было очень легко использовать Удачи

...