blob: 345adac21db5e3e0d9d0b89fe9f3e80fa16b1853 [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
Fred Drakeb7168c31999-04-22 17:53:37 +000026\begin{classdesc}{Telnet}{\optional{host\optional{, port}}}
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.
Fred Drake658cef01999-03-15 15:44:18 +000033
34Do not reopen an already connected instance.
35
36This class has many \method{read_*()} methods. Note that some of them
37raise \exception{EOFError} when the end of the connection is read,
38because they can return an empty string for other reasons. See the
Fred Drakeb7168c31999-04-22 17:53:37 +000039individual descriptions below.
Fred Drake658cef01999-03-15 15:44:18 +000040\end{classdesc}
41
42
Fred Drakeac308d02000-04-26 18:20:04 +000043\begin{seealso}
44 \seerfc{854}{Telnet Protocol Specification}{
45 Definition of the Telnet protocol.}
46\end{seealso}
47
48
49
Fred Drake658cef01999-03-15 15:44:18 +000050\subsection{Telnet Objects \label{telnet-objects}}
51
52\class{Telnet} instances have the following methods:
53
54
Fred Drakeb7168c31999-04-22 17:53:37 +000055\begin{methoddesc}{read_until}{expected\optional{, timeout}}
Fred Drake658cef01999-03-15 15:44:18 +000056Read until a given string is encountered or until timeout.
57
58When no match is found, return whatever is available instead,
59possibly the empty string. Raise \exception{EOFError} if the connection
60is closed and no cooked data is available.
61\end{methoddesc}
62
Fred Drakeb7168c31999-04-22 17:53:37 +000063\begin{methoddesc}{read_all}{}
Fred Drakec37b65e2001-11-28 07:26:15 +000064Read all data until \EOF; block until connection closed.
Fred Drake658cef01999-03-15 15:44:18 +000065\end{methoddesc}
66
Fred Drakeb7168c31999-04-22 17:53:37 +000067\begin{methoddesc}{read_some}{}
68Read at least one byte of cooked data unless \EOF{} is hit.
69Return \code{''} if \EOF{} is hit. Block if no data is immediately
70available.
Fred Drake658cef01999-03-15 15:44:18 +000071\end{methoddesc}
72
Fred Drakeb7168c31999-04-22 17:53:37 +000073\begin{methoddesc}{read_very_eager}{}
74Read everything that can be without blocking in I/O (eager).
Fred Drake658cef01999-03-15 15:44:18 +000075
76Raise \exception{EOFError} if connection closed and no cooked data
77available. Return \code{''} if no cooked data available otherwise.
Fred Drakeb7168c31999-04-22 17:53:37 +000078Do not block unless in the midst of an IAC sequence.
Fred Drake658cef01999-03-15 15:44:18 +000079\end{methoddesc}
80
Fred Drakeb7168c31999-04-22 17:53:37 +000081\begin{methoddesc}{read_eager}{}
Fred Drake658cef01999-03-15 15:44:18 +000082Read readily available data.
83
84Raise \exception{EOFError} if connection closed and no cooked data
85available. Return \code{''} if no cooked data available otherwise.
Fred Drakeb7168c31999-04-22 17:53:37 +000086Do not block unless in the midst of an IAC sequence.
Fred Drake658cef01999-03-15 15:44:18 +000087\end{methoddesc}
88
Fred Drakeb7168c31999-04-22 17:53:37 +000089\begin{methoddesc}{read_lazy}{}
90Process and return data already in the queues (lazy).
Fred Drake658cef01999-03-15 15:44:18 +000091
92Raise \exception{EOFError} if connection closed and no data available.
Fred Drakeb7168c31999-04-22 17:53:37 +000093Return \code{''} if no cooked data available otherwise. Do not block
Fred Drake658cef01999-03-15 15:44:18 +000094unless in the midst of an IAC sequence.
95\end{methoddesc}
96
Fred Drakeb7168c31999-04-22 17:53:37 +000097\begin{methoddesc}{read_very_lazy}{}
Fred Drake658cef01999-03-15 15:44:18 +000098Return any data available in the cooked queue (very lazy).
99
100Raise \exception{EOFError} if connection closed and no data available.
Fred Drakeb7168c31999-04-22 17:53:37 +0000101Return \code{''} if no cooked data available otherwise. This method
102never blocks.
Fred Drake658cef01999-03-15 15:44:18 +0000103\end{methoddesc}
104
Martin v. Löwis1da9c572002-11-04 09:56:00 +0000105\begin{methoddesc}{read_sb_data}{}
106Return the data collected between a SB/SE pair (suboption begin/end).
107The callback should access these data when it was invoked with a
108\code{SE} command. This method never blocks.
109
110\versionadded{2.3}
111\end{methoddesc}
112
Fred Drakeb7168c31999-04-22 17:53:37 +0000113\begin{methoddesc}{open}{host\optional{, port}}
Fred Drake658cef01999-03-15 15:44:18 +0000114Connect to a host.
Fred Drake658cef01999-03-15 15:44:18 +0000115The optional second argument is the port number, which
Fred Drakeab1df4f2001-07-06 20:23:02 +0000116defaults to the standard Telnet port (23).
Fred Drake658cef01999-03-15 15:44:18 +0000117
Fred Drakeb7168c31999-04-22 17:53:37 +0000118Do not try to reopen an already connected instance.
Fred Drake658cef01999-03-15 15:44:18 +0000119\end{methoddesc}
120
Fred Drakeb7168c31999-04-22 17:53:37 +0000121\begin{methoddesc}{msg}{msg\optional{, *args}}
122Print a debug message when the debug level is \code{>} 0.
Fred Drake658cef01999-03-15 15:44:18 +0000123If extra arguments are present, they are substituted in the
124message using the standard string formatting operator.
125\end{methoddesc}
126
Fred Drakeb7168c31999-04-22 17:53:37 +0000127\begin{methoddesc}{set_debuglevel}{debuglevel}
128Set the debug level. The higher the value of \var{debuglevel}, the
129more debug output you get (on \code{sys.stdout}).
Fred Drake658cef01999-03-15 15:44:18 +0000130\end{methoddesc}
131
Fred Drakeb7168c31999-04-22 17:53:37 +0000132\begin{methoddesc}{close}{}
Fred Drake658cef01999-03-15 15:44:18 +0000133Close the connection.
134\end{methoddesc}
135
Fred Drakeb7168c31999-04-22 17:53:37 +0000136\begin{methoddesc}{get_socket}{}
Fred Drake658cef01999-03-15 15:44:18 +0000137Return the socket object used internally.
138\end{methoddesc}
139
Fred Drakeb7168c31999-04-22 17:53:37 +0000140\begin{methoddesc}{fileno}{}
141Return the file descriptor of the socket object used internally.
Fred Drake658cef01999-03-15 15:44:18 +0000142\end{methoddesc}
143
Fred Drakeb7168c31999-04-22 17:53:37 +0000144\begin{methoddesc}{write}{buffer}
Fred Drake658cef01999-03-15 15:44:18 +0000145Write a string to the socket, doubling any IAC characters.
Fred Drakeb7168c31999-04-22 17:53:37 +0000146This can block if the connection is blocked. May raise
147\exception{socket.error} if the connection is closed.
Fred Drake658cef01999-03-15 15:44:18 +0000148\end{methoddesc}
149
Fred Drakeb7168c31999-04-22 17:53:37 +0000150\begin{methoddesc}{interact}{}
Fred Drakeab1df4f2001-07-06 20:23:02 +0000151Interaction function, emulates a very dumb Telnet client.
Fred Drake658cef01999-03-15 15:44:18 +0000152\end{methoddesc}
153
Fred Drakeb7168c31999-04-22 17:53:37 +0000154\begin{methoddesc}{mt_interact}{}
155Multithreaded version of \method{interact()}.
Fred Drake658cef01999-03-15 15:44:18 +0000156\end{methoddesc}
157
Fred Drakeb7168c31999-04-22 17:53:37 +0000158\begin{methoddesc}{expect}{list\optional{, timeout}}
Fred Drake658cef01999-03-15 15:44:18 +0000159Read until one from a list of a regular expressions matches.
160
161The first argument is a list of regular expressions, either
162compiled (\class{re.RegexObject} instances) or uncompiled (strings).
Fred Drakeb7168c31999-04-22 17:53:37 +0000163The optional second argument is a timeout, in seconds; the default
Thomas Woutersf8316632000-07-16 19:01:10 +0000164is to block indefinitely.
Fred Drake658cef01999-03-15 15:44:18 +0000165
166Return a tuple of three items: the index in the list of the
167first regular expression that matches; the match object
168returned; and the text read up till and including the match.
169
170If end of file is found and no text was read, raise
171\exception{EOFError}. Otherwise, when nothing matches, return
172\code{(-1, None, \var{text})} where \var{text} is the text received so
173far (may be the empty string if a timeout happened).
174
Fred Drakeab1df4f2001-07-06 20:23:02 +0000175If a regular expression ends with a greedy match (such as \regexp{.*})
Fred Drake658cef01999-03-15 15:44:18 +0000176or if more than one expression can match the same input, the
Thomas Woutersf8316632000-07-16 19:01:10 +0000177results are indeterministic, and may depend on the I/O timing.
Fred Drake658cef01999-03-15 15:44:18 +0000178\end{methoddesc}
Fred Drake38e5d272000-04-03 20:13:55 +0000179
Martin v. Löwisb0162f92001-09-06 08:51:38 +0000180\begin{methoddesc}{set_option_negotiation_callback}{callback}
181Each time a telnet option is read on the input flow, this
182\var{callback} (if set) is called with the following parameters :
183callback(telnet socket, command (DO/DONT/WILL/WONT), option). No other
184action is done afterwards by telnetlib.
185\end{methoddesc}
186
Fred Drake38e5d272000-04-03 20:13:55 +0000187
188\subsection{Telnet Example \label{telnet-example}}
189\sectionauthor{Peter Funk}{pf@artcom-gmbh.de}
190
191A simple example illustrating typical use:
192
193\begin{verbatim}
194import getpass
195import sys
196import telnetlib
197
198HOST = "localhost"
199user = raw_input("Enter your remote account: ")
200password = getpass.getpass()
201
202tn = telnetlib.Telnet(HOST)
203
204tn.read_until("login: ")
205tn.write(user + "\n")
206if password:
207 tn.read_until("Password: ")
208 tn.write(password + "\n")
209
210tn.write("ls\n")
211tn.write("exit\n")
212
213print tn.read_all()
214\end{verbatim}