2010-08-05 4 views
3

Я создаю сервер на python (что он делает, не имеет значения), но я бы хотел, чтобы он принимал telnet-соединения и предоставлял интерфейс командной строки с возможностями редактирования строк (tabcompletion, emacs/vi- режим и т. д.) и историю за сеанс. Я успешно создал сеанс telnet, отключил режим линии и включил серверное эхо.python line editing telnet server

Мои первоначальные мысли заключались в использовании readline, но модуль readline python, похоже, работает только на один сеанс на stdin; и изучение базовой библиотеки readline, которая, похоже, работает так.

Однако я хотел бы создать экземпляр (назовите его, если хотите) для каждого клиента, а так как символы (байты) будут получены в состояние. Как только полная строка будет сгенерирована, она передаст ее серверу, который сможет его проанализировать.

Итак, мой вопрос в том, есть ли библиотека, которая обрабатывает подобные вещи, даже для c-библиотеки будет достаточно.

EDIT: Для того, чтобы уточнить, у меня есть полностью функциональный сервер уже, но я хочу, чтобы интерфейс телнета как добавить на перенастроить, получить информацию и т.д.

+0

Я не уверен, что дополнительное состояние вам может понадобиться, если ваш сервер "полностью функционален. Не могли бы вы точно объяснить, что у вас есть до сих пор, и что вам нужно, чтобы сделать это в настоящее время? – Kylotan

+0

Я хочу, чтобы сервер принимал telnet-соединения, которые предоставляют интерфейс командной строки для доступа к функциям, предоставляемым сервером. Я добавил слуховой сокет, и для каждого подключения он активировал режим символов telnet. Вот где я застрял. (В качестве примера скажем, что у меня есть веб-сервер, который я хотел бы предоставить telnet для доступа к настройкам изменения и навигации по webroot. Это то, что я имею в виду, что сервер полностью функциональен, а telnet-часть будет аддоном . Функция сервера не имеет значения.) – ext

+0

@ext, можете ли вы поделиться тем, как у вас был базовый сервер? Мне нужно использовать что-то подобное, но я не могу добиться «отключенного режима линии и включенного эхо-сервера» –

ответ

1

Возможны cmd библиотеки может быть интерес/помочь?

+0

Я работаю только для одного сеанса и использует readline. Мне нужно что-то, что хранит состояние для каждой сессии, чтобы каждый из них мог взаимодействовать независимо друг от друга. – ext

+0

Как упоминается связанная страница, вы можете переопределить свои средства ввода, чтобы она использовала нечто иное, чем readline. Что касается сеансов, я считаю, что вы можете создавать несколько объектов Cmd. – Amber

2

Похоже, что у вас есть раздел TELNET, и теперь вы хотите предоставить функции, обычно встречающиеся в оболочках, таких как BASH, KSH и т. Д. Я сам не пробовал, но посмотрю как shython: «a универсальная оболочка, имеющая функции как bash, так и python ».