1:mod:`telnetlib` --- Telnet client 2================================== 3 4.. module:: telnetlib 5 :synopsis: Telnet client class. 6.. sectionauthor:: Skip Montanaro <skip@pobox.com> 7 8 9.. index:: single: protocol; Telnet 10 11**Source code:** :source:`Lib/telnetlib.py` 12 13-------------- 14 15The :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 33 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 35 the server will be established before the constructor returns. The optional 36 *timeout* parameter specifies a timeout in seconds for blocking operations 37 like the connection attempt (if not specified, the global default timeout 38 setting will be used). 39 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 133 specifies a timeout in seconds for blocking operations like the connection 134 attempt (if not specified, the global default timeout setting will be used). 135 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 192 (:class:`regex objects <re-objects>`) or uncompiled (strings). The optional second 193 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 204 than one expression can match the same input, the results are 205 non-deterministic, and may depend on the I/O timing. 206 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 211 called with the following parameters: callback(telnet socket, command 212 (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 246