Travis Continuous Integration Coveralls Code Coverage Latest Version Downloads Join Chat


telnetlib3 is a Telnet Client and Server library for python. This project requires python 3.3 and later, using the asyncio module.

Quick Example

Authoring a Telnet Server using Streams interface that offers a basic war game:

import asyncio, telnetlib3

def shell(reader, writer):
    writer.write('Would you like to play a game? ')
    inp = yield from
    if inp:
        writer.write('\r\nThey say the only way to win '
                     'is to not play at all.\r\n')
        yield from writer.drain()

loop = asyncio.get_event_loop()
coro = telnetlib3.create_server(port=6023, shell=shell)
server = loop.run_until_complete(coro)

Authoring a Telnet Client that plays the war game with this server:

import asyncio, telnetlib3

def shell(reader, writer):
    buf = ''
    while True:
        outp = yield from
        if not outp:
            # EOF

        print(outp, end='', flush=True)

        if '?' in outp:
            # reply all questions with 'y'.


loop = asyncio.get_event_loop()
coro = telnetlib3.open_connection('localhost', 6023, shell=shell)
reader, _ = loop.run_until_complete(coro)


Two command-line scripts are distributed with this package.


Small terminal telnet client. Some example destinations and options:

telnetlib3-client --encoding=cp437 --force-binary


Telnet server providing the default debugging shell. This provides a simple shell server that allows introspection of the session’s values.

Both command-line scripts accept argument --shell=my_module.fn_shell describing a python module path to a coroutine of signature shell(reader, writer).


The following RFC specifications are implemented:

  • rfc-727, “Telnet Logout Option,” Apr 1977.
  • rfc-779, “Telnet Send-Location Option”, Apr 1981.
  • rfc-854, “Telnet Protocol Specification”, May 1983.
  • rfc-855, “Telnet Option Specifications”, May 1983.
  • rfc-856, “Telnet Binary Transmission”, May 1983.
  • rfc-857, “Telnet Echo Option”, May 1983.
  • rfc-858, “Telnet Suppress Go Ahead Option”, May 1983.
  • rfc-859, “Telnet Status Option”, May 1983.
  • rfc-860, “Telnet Timing mark Option”, May 1983.
  • rfc-885, “Telnet End of Record Option”, Dec 1983.
  • rfc-1073, “Telnet Window Size Option”, Oct 1988.
  • rfc-1079, “Telnet Terminal Speed Option”, Dec 1988.
  • rfc-1091, “Telnet Terminal-Type Option”, Feb 1989.
  • rfc-1096, “Telnet X Display Location Option”, Mar 1989.
  • rfc-1123, “Requirements for Internet Hosts”, Oct 1989.
  • rfc-1184, “Telnet Linemode Option (extended options)”, Oct 1990.
  • rfc-1372, “Telnet Remote Flow Control Option”, Oct 1992.
  • rfc-1408, “Telnet Environment Option”, Jan 1993.
  • rfc-1571, “Telnet Environment Option Interoperability Issues”, Jan 1994.
  • rfc-1572, “Telnet Environment Option”, Jan 1994.
  • rfc-2066, “Telnet Charset Option”, Jan 1997.

Further Reading

Further documentation available at