blob: 269ee9b8c481a217a1323c69af4efca377f3c2d6 [file] [log] [blame]
Fred Drake658cef01999-03-15 15:44:18 +00001\section{\module{telnetlib} ---
2 Telnet client}
3
4\declaremodule{standard}{telnetlib}
5\modulesynopsis{Telnet client class.}
Fred Drake38e5d272000-04-03 20:13:55 +00006\sectionauthor{Skip Montanaro}{skip@mojam.com}
Fred Drake658cef01999-03-15 15:44:18 +00007
Fred Drakeab1df4f2001-07-06 20:23:02 +00008\index{protocol!Telnet}
9
Fred Drake658cef01999-03-15 15:44:18 +000010The \module{telnetlib} module provides a \class{Telnet} class that
11implements the Telnet protocol. See \rfc{854} for details about the
Martin v. Löwisb0162f92001-09-06 08:51:38 +000012protocol. In addition, it provides symbolic constants for the protocol
Martin v. Löwis22610da2002-11-04 17:41:18 +000013characters (see below), and for the telnet options. The
Martin v. Löwisb0162f92001-09-06 08:51:38 +000014symbolic names of the telnet options follow the definitions in
15\code{arpa/telnet.h}, with the leading \code{TELOPT_} removed. For
16symbolic names of options which are traditionally not included in
17\code{arpa/telnet.h}, see the module source itself.
Fred Drake658cef01999-03-15 15:44:18 +000018
Martin v. Löwis22610da2002-11-04 17:41:18 +000019The symbolic constants for the telnet commands are: IAC, DONT, DO,
20WONT, WILL, SE (Subnegotiation End), NOP (No Operation), DM (Data
21Mark), BRK (Break), IP (Interrupt process), AO (Abort output), AYT
22(Are You There), EC (Erase Character), EL (Erase Line), GA (Go Ahead),
23SB (Subnegotiation Begin).
24
Fred Drake658cef01999-03-15 15:44:18 +000025
Guido van Rossumd8faa362007-04-27 19:54:29 +000026\begin{classdesc}{Telnet}{\optional{host\optional{, port\optional{, timeout}}}}
Fred Drakeab1df4f2001-07-06 20:23:02 +000027\class{Telnet} represents a connection to a Telnet server. The
Fred Drakeae088532000-05-03 15:11:47 +000028instance is initially not connected by default; the \method{open()}
29method must be used to establish a connection. Alternatively, the
30host name and optional port number can be passed to the constructor,
31to, in which case the connection to the server will be established
32before the constructor returns.
Guido van Rossumd8faa362007-04-27 19:54:29 +000033The optional \var{timeout} parameter specifies a timeout in seconds for the
34connection attempt (if not specified, or passed as None, the global default
35timeout setting will be used).
Fred Drake658cef01999-03-15 15:44:18 +000036
37Do not reopen an already connected instance.
38
39This class has many \method{read_*()} methods. Note that some of them
40raise \exception{EOFError} when the end of the connection is read,
41because they can return an empty string for other reasons. See the
Fred Drakeb7168c31999-04-22 17:53:37 +000042individual descriptions below.
Fred Drake658cef01999-03-15 15:44:18 +000043\end{classdesc}
44
45
Fred Drakeac308d02000-04-26 18:20:04 +000046\begin{seealso}
47 \seerfc{854}{Telnet Protocol Specification}{
48 Definition of the Telnet protocol.}
49\end{seealso}
50
51
52
Fred Drake658cef01999-03-15 15:44:18 +000053\subsection{Telnet Objects \label{telnet-objects}}
54
55\class{Telnet} instances have the following methods:
56
57
Guido van Rossumd8faa362007-04-27 19:54:29 +000058\begin{methoddesc}[Telnet]{read_until}{expected\optional{, timeout}}
Fred Drake83c19ee2003-04-29 13:39:05 +000059Read until a given string, \var{expected}, is encountered or until
60\var{timeout} seconds have passed.
Fred Drake658cef01999-03-15 15:44:18 +000061
62When no match is found, return whatever is available instead,
63possibly the empty string. Raise \exception{EOFError} if the connection
64is closed and no cooked data is available.
65\end{methoddesc}
66
Guido van Rossumd8faa362007-04-27 19:54:29 +000067\begin{methoddesc}[Telnet]{read_all}{}
Fred Drakec37b65e2001-11-28 07:26:15 +000068Read all data until \EOF; block until connection closed.
Fred Drake658cef01999-03-15 15:44:18 +000069\end{methoddesc}
70
Guido van Rossumd8faa362007-04-27 19:54:29 +000071\begin{methoddesc}[Telnet]{read_some}{}
Fred Drakeb7168c31999-04-22 17:53:37 +000072Read at least one byte of cooked data unless \EOF{} is hit.
73Return \code{''} if \EOF{} is hit. Block if no data is immediately
74available.
Fred Drake658cef01999-03-15 15:44:18 +000075\end{methoddesc}
76
Guido van Rossumd8faa362007-04-27 19:54:29 +000077\begin{methoddesc}[Telnet]{read_very_eager}{}
Fred Drakeb7168c31999-04-22 17:53:37 +000078Read everything that can be without blocking in I/O (eager).
Fred Drake658cef01999-03-15 15:44:18 +000079
80Raise \exception{EOFError} if connection closed and no cooked data
81available. Return \code{''} if no cooked data available otherwise.
Fred Drakeb7168c31999-04-22 17:53:37 +000082Do not block unless in the midst of an IAC sequence.
Fred Drake658cef01999-03-15 15:44:18 +000083\end{methoddesc}
84
Guido van Rossumd8faa362007-04-27 19:54:29 +000085\begin{methoddesc}[Telnet]{read_eager}{}
Fred Drake658cef01999-03-15 15:44:18 +000086Read readily available data.
87
88Raise \exception{EOFError} if connection closed and no cooked data
89available. Return \code{''} if no cooked data available otherwise.
Fred Drakeb7168c31999-04-22 17:53:37 +000090Do not block unless in the midst of an IAC sequence.
Fred Drake658cef01999-03-15 15:44:18 +000091\end{methoddesc}
92
Guido van Rossumd8faa362007-04-27 19:54:29 +000093\begin{methoddesc}[Telnet]{read_lazy}{}
Fred Drakeb7168c31999-04-22 17:53:37 +000094Process and return data already in the queues (lazy).
Fred Drake658cef01999-03-15 15:44:18 +000095
96Raise \exception{EOFError} if connection closed and no data available.
Fred Drakeb7168c31999-04-22 17:53:37 +000097Return \code{''} if no cooked data available otherwise. Do not block
Fred Drake658cef01999-03-15 15:44:18 +000098unless in the midst of an IAC sequence.
99\end{methoddesc}
100
Guido van Rossumd8faa362007-04-27 19:54:29 +0000101\begin{methoddesc}[Telnet]{read_very_lazy}{}
Fred Drake658cef01999-03-15 15:44:18 +0000102Return any data available in the cooked queue (very lazy).
103
104Raise \exception{EOFError} if connection closed and no data available.
Fred Drakeb7168c31999-04-22 17:53:37 +0000105Return \code{''} if no cooked data available otherwise. This method
106never blocks.
Fred Drake658cef01999-03-15 15:44:18 +0000107\end{methoddesc}
108
Guido van Rossumd8faa362007-04-27 19:54:29 +0000109\begin{methoddesc}[Telnet]{read_sb_data}{}
Martin v. Löwis1da9c572002-11-04 09:56:00 +0000110Return the data collected between a SB/SE pair (suboption begin/end).
111The callback should access these data when it was invoked with a
112\code{SE} command. This method never blocks.
113
114\versionadded{2.3}
115\end{methoddesc}
116
Guido van Rossumd8faa362007-04-27 19:54:29 +0000117\begin{methoddesc}[Telnet]{open}{host\optional{, port\optional{, timeout}}}
Fred Drake658cef01999-03-15 15:44:18 +0000118Connect to a host.
Fred Drake658cef01999-03-15 15:44:18 +0000119The optional second argument is the port number, which
Fred Drakeab1df4f2001-07-06 20:23:02 +0000120defaults to the standard Telnet port (23).
Guido van Rossumd8faa362007-04-27 19:54:29 +0000121The optional \var{timeout} parameter specifies a timeout in seconds for the
122connection attempt (if not specified, or passed as None, the global default
123timeout setting will be used).
Fred Drake658cef01999-03-15 15:44:18 +0000124
Fred Drakeb7168c31999-04-22 17:53:37 +0000125Do not try to reopen an already connected instance.
Fred Drake658cef01999-03-15 15:44:18 +0000126\end{methoddesc}
127
Guido van Rossumd8faa362007-04-27 19:54:29 +0000128\begin{methoddesc}[Telnet]{msg}{msg\optional{, *args}}
Fred Drakeb7168c31999-04-22 17:53:37 +0000129Print a debug message when the debug level is \code{>} 0.
Fred Drake658cef01999-03-15 15:44:18 +0000130If extra arguments are present, they are substituted in the
131message using the standard string formatting operator.
132\end{methoddesc}
133
Guido van Rossumd8faa362007-04-27 19:54:29 +0000134\begin{methoddesc}[Telnet]{set_debuglevel}{debuglevel}
Fred Drakeb7168c31999-04-22 17:53:37 +0000135Set the debug level. The higher the value of \var{debuglevel}, the
136more debug output you get (on \code{sys.stdout}).
Fred Drake658cef01999-03-15 15:44:18 +0000137\end{methoddesc}
138
Guido van Rossumd8faa362007-04-27 19:54:29 +0000139\begin{methoddesc}[Telnet]{close}{}
Fred Drake658cef01999-03-15 15:44:18 +0000140Close the connection.
141\end{methoddesc}
142
Guido van Rossumd8faa362007-04-27 19:54:29 +0000143\begin{methoddesc}[Telnet]{get_socket}{}
Fred Drake658cef01999-03-15 15:44:18 +0000144Return the socket object used internally.
145\end{methoddesc}
146
Guido van Rossumd8faa362007-04-27 19:54:29 +0000147\begin{methoddesc}[Telnet]{fileno}{}
Fred Drakeb7168c31999-04-22 17:53:37 +0000148Return the file descriptor of the socket object used internally.
Fred Drake658cef01999-03-15 15:44:18 +0000149\end{methoddesc}
150
Guido van Rossumd8faa362007-04-27 19:54:29 +0000151\begin{methoddesc}[Telnet]{write}{buffer}
Fred Drake658cef01999-03-15 15:44:18 +0000152Write a string to the socket, doubling any IAC characters.
Fred Drakeb7168c31999-04-22 17:53:37 +0000153This can block if the connection is blocked. May raise
154\exception{socket.error} if the connection is closed.
Fred Drake658cef01999-03-15 15:44:18 +0000155\end{methoddesc}
156
Guido van Rossumd8faa362007-04-27 19:54:29 +0000157\begin{methoddesc}[Telnet]{interact}{}
Fred Drakeab1df4f2001-07-06 20:23:02 +0000158Interaction function, emulates a very dumb Telnet client.
Fred Drake658cef01999-03-15 15:44:18 +0000159\end{methoddesc}
160
Guido van Rossumd8faa362007-04-27 19:54:29 +0000161\begin{methoddesc}[Telnet]{mt_interact}{}
Fred Drakeb7168c31999-04-22 17:53:37 +0000162Multithreaded version of \method{interact()}.
Fred Drake658cef01999-03-15 15:44:18 +0000163\end{methoddesc}
164
Guido van Rossumd8faa362007-04-27 19:54:29 +0000165\begin{methoddesc}[Telnet]{expect}{list\optional{, timeout}}
Fred Drake658cef01999-03-15 15:44:18 +0000166Read until one from a list of a regular expressions matches.
167
168The first argument is a list of regular expressions, either
169compiled (\class{re.RegexObject} instances) or uncompiled (strings).
Fred Drakeb7168c31999-04-22 17:53:37 +0000170The optional second argument is a timeout, in seconds; the default
Thomas Woutersf8316632000-07-16 19:01:10 +0000171is to block indefinitely.
Fred Drake658cef01999-03-15 15:44:18 +0000172
173Return a tuple of three items: the index in the list of the
174first regular expression that matches; the match object
175returned; and the text read up till and including the match.
176
177If end of file is found and no text was read, raise
178\exception{EOFError}. Otherwise, when nothing matches, return
179\code{(-1, None, \var{text})} where \var{text} is the text received so
180far (may be the empty string if a timeout happened).
181
Fred Drakeab1df4f2001-07-06 20:23:02 +0000182If a regular expression ends with a greedy match (such as \regexp{.*})
Fred Drake658cef01999-03-15 15:44:18 +0000183or if more than one expression can match the same input, the
Thomas Woutersf8316632000-07-16 19:01:10 +0000184results are indeterministic, and may depend on the I/O timing.
Fred Drake658cef01999-03-15 15:44:18 +0000185\end{methoddesc}
Fred Drake38e5d272000-04-03 20:13:55 +0000186
Guido van Rossumd8faa362007-04-27 19:54:29 +0000187\begin{methoddesc}[Telnet]{set_option_negotiation_callback}{callback}
Martin v. Löwisb0162f92001-09-06 08:51:38 +0000188Each time a telnet option is read on the input flow, this
189\var{callback} (if set) is called with the following parameters :
190callback(telnet socket, command (DO/DONT/WILL/WONT), option). No other
191action is done afterwards by telnetlib.
192\end{methoddesc}
193
Fred Drake38e5d272000-04-03 20:13:55 +0000194
195\subsection{Telnet Example \label{telnet-example}}
196\sectionauthor{Peter Funk}{pf@artcom-gmbh.de}
197
198A simple example illustrating typical use:
199
200\begin{verbatim}
201import getpass
202import sys
203import telnetlib
204
Neal Norwitzce96f692006-03-17 06:49:51 +0000205def raw_input(prompt):
206 sys.stdout.write(prompt)
207 sys.stdout.flush()
208 return sys.stdin.readline()
209
Fred Drake38e5d272000-04-03 20:13:55 +0000210HOST = "localhost"
211user = raw_input("Enter your remote account: ")
212password = getpass.getpass()
213
214tn = telnetlib.Telnet(HOST)
215
216tn.read_until("login: ")
217tn.write(user + "\n")
218if password:
219 tn.read_until("Password: ")
220 tn.write(password + "\n")
221
222tn.write("ls\n")
223tn.write("exit\n")
224
225print tn.read_all()
226\end{verbatim}