blob: a3019f5fc3c951950f396cdc64bb2e510f3dfce0 [file] [log] [blame]
Georg Brandl8ec7f652007-08-15 14:28:01 +00001:mod:`telnetlib` --- Telnet client
2==================================
3
4.. module:: telnetlib
5 :synopsis: Telnet client class.
Skip Montanaro54662462007-12-08 15:26:16 +00006.. sectionauthor:: Skip Montanaro <skip@pobox.com>
Georg Brandl8ec7f652007-08-15 14:28:01 +00007
8
9.. index:: single: protocol; Telnet
10
Éric Araujo29a0b572011-08-19 02:14:03 +020011**Source code:** :source:`Lib/telnetlib.py`
12
13--------------
14
Georg Brandl8ec7f652007-08-15 14:28:01 +000015The :mod:`telnetlib` module provides a :class:`Telnet` class that implements the
16Telnet protocol. See :rfc:`854` for details about the protocol. In addition, it
17provides symbolic constants for the protocol characters (see below), and for the
18telnet options. The symbolic names of the telnet options follow the definitions
19in ``arpa/telnet.h``, with the leading ``TELOPT_`` removed. For symbolic names
20of options which are traditionally not included in ``arpa/telnet.h``, see the
21module source itself.
22
23The symbolic constants for the telnet commands are: IAC, DONT, DO, WONT, WILL,
24SE (Subnegotiation End), NOP (No Operation), DM (Data Mark), BRK (Break), IP
25(Interrupt process), AO (Abort output), AYT (Are You There), EC (Erase
26Character), EL (Erase Line), GA (Go Ahead), SB (Subnegotiation Begin).
27
28
29.. class:: Telnet([host[, port[, timeout]]])
30
31 :class:`Telnet` represents a connection to a Telnet server. The instance is
32 initially not connected by default; the :meth:`open` method must be used to
Georg Brandlab756f62008-05-11 11:09:35 +000033 establish a connection. Alternatively, the host name and optional port
34 number can be passed to the constructor, to, in which case the connection to
Georg Brandldd59f1b2010-05-21 21:30:47 +000035 the server will be established before the constructor returns. The optional
Georg Brandlab756f62008-05-11 11:09:35 +000036 *timeout* parameter specifies a timeout in seconds for blocking operations
Georg Brandldd59f1b2010-05-21 21:30:47 +000037 like the connection attempt (if not specified, the global default timeout
38 setting will be used).
Georg Brandl8ec7f652007-08-15 14:28:01 +000039
40 Do not reopen an already connected instance.
41
42 This class has many :meth:`read_\*` methods. Note that some of them raise
43 :exc:`EOFError` when the end of the connection is read, because they can return
44 an empty string for other reasons. See the individual descriptions below.
45
46 .. versionchanged:: 2.6
47 *timeout* was added.
48
49
50.. seealso::
51
52 :rfc:`854` - Telnet Protocol Specification
53 Definition of the Telnet protocol.
54
55
56.. _telnet-objects:
57
58Telnet Objects
59--------------
60
61:class:`Telnet` instances have the following methods:
62
63
64.. method:: Telnet.read_until(expected[, timeout])
65
66 Read until a given string, *expected*, is encountered or until *timeout* seconds
67 have passed.
68
69 When no match is found, return whatever is available instead, possibly the empty
70 string. Raise :exc:`EOFError` if the connection is closed and no cooked data is
71 available.
72
73
74.. method:: Telnet.read_all()
75
76 Read all data until EOF; block until connection closed.
77
78
79.. method:: Telnet.read_some()
80
81 Read at least one byte of cooked data unless EOF is hit. Return ``''`` if EOF is
82 hit. Block if no data is immediately available.
83
84
85.. method:: Telnet.read_very_eager()
86
87 Read everything that can be without blocking in I/O (eager).
88
89 Raise :exc:`EOFError` if connection closed and no cooked data available. Return
90 ``''`` if no cooked data available otherwise. Do not block unless in the midst
91 of an IAC sequence.
92
93
94.. method:: Telnet.read_eager()
95
96 Read readily available data.
97
98 Raise :exc:`EOFError` if connection closed and no cooked data available. Return
99 ``''`` if no cooked data available otherwise. Do not block unless in the midst
100 of an IAC sequence.
101
102
103.. method:: Telnet.read_lazy()
104
105 Process and return data already in the queues (lazy).
106
107 Raise :exc:`EOFError` if connection closed and no data available. Return ``''``
108 if no cooked data available otherwise. Do not block unless in the midst of an
109 IAC sequence.
110
111
112.. method:: Telnet.read_very_lazy()
113
114 Return any data available in the cooked queue (very lazy).
115
116 Raise :exc:`EOFError` if connection closed and no data available. Return ``''``
117 if no cooked data available otherwise. This method never blocks.
118
119
120.. method:: Telnet.read_sb_data()
121
122 Return the data collected between a SB/SE pair (suboption begin/end). The
123 callback should access these data when it was invoked with a ``SE`` command.
124 This method never blocks.
125
126 .. versionadded:: 2.3
127
128
129.. method:: Telnet.open(host[, port[, timeout]])
130
131 Connect to a host. The optional second argument is the port number, which
132 defaults to the standard Telnet port (23). The optional *timeout* parameter
Georg Brandlab756f62008-05-11 11:09:35 +0000133 specifies a timeout in seconds for blocking operations like the connection
Facundo Batista4f1b1ed2008-05-29 16:39:26 +0000134 attempt (if not specified, the global default timeout setting will be used).
Georg Brandl8ec7f652007-08-15 14:28:01 +0000135
136 Do not try to reopen an already connected instance.
137
138 .. versionchanged:: 2.6
139 *timeout* was added.
140
141
142.. method:: Telnet.msg(msg[, *args])
143
144 Print a debug message when the debug level is ``>`` 0. If extra arguments are
145 present, they are substituted in the message using the standard string
146 formatting operator.
147
148
149.. method:: Telnet.set_debuglevel(debuglevel)
150
151 Set the debug level. The higher the value of *debuglevel*, the more debug
152 output you get (on ``sys.stdout``).
153
154
155.. method:: Telnet.close()
156
157 Close the connection.
158
159
160.. method:: Telnet.get_socket()
161
162 Return the socket object used internally.
163
164
165.. method:: Telnet.fileno()
166
167 Return the file descriptor of the socket object used internally.
168
169
170.. method:: Telnet.write(buffer)
171
172 Write a string to the socket, doubling any IAC characters. This can block if the
173 connection is blocked. May raise :exc:`socket.error` if the connection is
174 closed.
175
176
177.. method:: Telnet.interact()
178
179 Interaction function, emulates a very dumb Telnet client.
180
181
182.. method:: Telnet.mt_interact()
183
184 Multithreaded version of :meth:`interact`.
185
186
187.. method:: Telnet.expect(list[, timeout])
188
189 Read until one from a list of a regular expressions matches.
190
191 The first argument is a list of regular expressions, either compiled
Serhiy Storchakab33336f2013-10-13 23:09:00 +0300192 (:class:`regex objects <re-objects>`) or uncompiled (strings). The optional second
Georg Brandl8ec7f652007-08-15 14:28:01 +0000193 argument is a timeout, in seconds; the default is to block indefinitely.
194
195 Return a tuple of three items: the index in the list of the first regular
196 expression that matches; the match object returned; and the text read up till
197 and including the match.
198
199 If end of file is found and no text was read, raise :exc:`EOFError`. Otherwise,
200 when nothing matches, return ``(-1, None, text)`` where *text* is the text
201 received so far (may be the empty string if a timeout happened).
202
203 If a regular expression ends with a greedy match (such as ``.*``) or if more
Georg Brandl09302282010-10-06 09:32:48 +0000204 than one expression can match the same input, the results are
205 non-deterministic, and may depend on the I/O timing.
Georg Brandl8ec7f652007-08-15 14:28:01 +0000206
207
208.. method:: Telnet.set_option_negotiation_callback(callback)
209
210 Each time a telnet option is read on the input flow, this *callback* (if set) is
Serhiy Storchakab7128732013-12-24 11:04:06 +0200211 called with the following parameters: callback(telnet socket, command
Georg Brandl8ec7f652007-08-15 14:28:01 +0000212 (DO/DONT/WILL/WONT), option). No other action is done afterwards by telnetlib.
213
214
215.. _telnet-example:
216
217Telnet Example
218--------------
219
220.. sectionauthor:: Peter Funk <pf@artcom-gmbh.de>
221
222
223A simple example illustrating typical use::
224
225 import getpass
226 import sys
227 import telnetlib
228
229 HOST = "localhost"
230 user = raw_input("Enter your remote account: ")
231 password = getpass.getpass()
232
233 tn = telnetlib.Telnet(HOST)
234
235 tn.read_until("login: ")
236 tn.write(user + "\n")
237 if password:
238 tn.read_until("Password: ")
239 tn.write(password + "\n")
240
241 tn.write("ls\n")
242 tn.write("exit\n")
243
244 print tn.read_all()
245