blob: 0c51a09c243f145e2732107f0c5faa50d0b29691 [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
Facundo Batistab6a5c9d2007-03-29 18:22:35 +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.
Facundo Batistab6a5c9d2007-03-29 18:22:35 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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).
Facundo Batistab6a5c9d2007-03-29 18:22:35 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +0000139\begin{methoddesc}[Telnet]{close}{}
Fred Drake658cef01999-03-15 15:44:18 +0000140Close the connection.
141\end{methoddesc}
142
Georg Brandlae91afd2007-04-01 22:39:10 +0000143\begin{methoddesc}[Telnet]{get_socket}{}
Fred Drake658cef01999-03-15 15:44:18 +0000144Return the socket object used internally.
145\end{methoddesc}
146
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
Georg Brandlae91afd2007-04-01 22:39:10 +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
205HOST = "localhost"
206user = raw_input("Enter your remote account: ")
207password = getpass.getpass()
208
209tn = telnetlib.Telnet(HOST)
210
211tn.read_until("login: ")
212tn.write(user + "\n")
213if password:
214 tn.read_until("Password: ")
215 tn.write(password + "\n")
216
217tn.write("ls\n")
218tn.write("exit\n")
219
220print tn.read_all()
221\end{verbatim}