views:

95

answers:

3

Hi, I am creating a server in python (what it is doing is irrelevant), but I would like it to accept telnet connections and provide a command line interface with line editing capabilities (tabcompletion, emacs/vi-mode, etc) and history per session. I have successfully created the telnet session, disabled line mode and enabled server echo.

My initial thoughts were using readline but the python readline module seems to only work for a single session on stdin; and examining the underlying readline library that seems to be the way it works.

What I would like to do however is to create an instance (call it state if you like) for each client, and as characters (bytes) are received feed to the state. Once a complete line has been generated it would pass it to the server which may parse it.

So my question is if there is a library which handles this kind of thing, even a c-library would be sufficient.

EDIT: To clarify, I've got a fully functional server already, but I want the telnet interface as an add on to reconfigure, get information, etc.

A: 

Perhaps the cmd library could be of interest/help?

Amber
I only works for a single session and uses readline. I need something which stores a state for each session so each of them are able to interact independently of each other.
ext
As the linked page mentions, you can override its input means so that it uses something other than readline. As for sessions, I believe you could create multiple Cmd objects.
Amber
+1  A: 

It sounds like you've got the TELNET part sorted, and now you want to provide features commonly found in shells like BASH, KSH etc. I've not tried it myself, but have a look as shython: "a versatile shell having features of both bash and python".

Adam
A: 

You need telnetlib http://docs.python.org/library/telnetlib.html?highlight=telnet#module-telnetlib

Gunslinger_
hey why you down this
Gunslinger_