blob: c7a4226dccdc018a1c7b4b9272d285a1878c1cb5 [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 Drake83c19ee2003-04-29 13:39:05 +000056Read until a given string, \var{expected}, is encountered or until
57\var{timeout} seconds have passed.
Fred Drake658cef01999-03-15 15:44:18 +000058
59When no match is found, return whatever is available instead,
60possibly the empty string. Raise \exception{EOFError} if the connection
61is closed and no cooked data is available.
62\end{methoddesc}
63
Fred Drakeb7168c31999-04-22 17:53:37 +000064\begin{methoddesc}{read_all}{}
Fred Drakec37b65e2001-11-28 07:26:15 +000065Read all data until \EOF; block until connection closed.
Fred Drake658cef01999-03-15 15:44:18 +000066\end{methoddesc}
67
Fred Drakeb7168c31999-04-22 17:53:37 +000068\begin{methoddesc}{read_some}{}
69Read at least one byte of cooked data unless \EOF{} is hit.
70Return \code{''} if \EOF{} is hit. Block if no data is immediately
71available.
Fred Drake658cef01999-03-15 15:44:18 +000072\end{methoddesc}
73
Fred Drakeb7168c31999-04-22 17:53:37 +000074\begin{methoddesc}{read_very_eager}{}
75Read everything that can be without blocking in I/O (eager).
Fred Drake658cef01999-03-15 15:44:18 +000076
77Raise \exception{EOFError} if connection closed and no cooked data
78available. Return \code{''} if no cooked data available otherwise.
Fred Drakeb7168c31999-04-22 17:53:37 +000079Do not block unless in the midst of an IAC sequence.
Fred Drake658cef01999-03-15 15:44:18 +000080\end{methoddesc}
81
Fred Drakeb7168c31999-04-22 17:53:37 +000082\begin{methoddesc}{read_eager}{}
Fred Drake658cef01999-03-15 15:44:18 +000083Read readily available data.
84
85Raise \exception{EOFError} if connection closed and no cooked data
86available. Return \code{''} if no cooked data available otherwise.
Fred Drakeb7168c31999-04-22 17:53:37 +000087Do not block unless in the midst of an IAC sequence.
Fred Drake658cef01999-03-15 15:44:18 +000088\end{methoddesc}
89
Fred Drakeb7168c31999-04-22 17:53:37 +000090\begin{methoddesc}{read_lazy}{}
91Process and return data already in the queues (lazy).
Fred Drake658cef01999-03-15 15:44:18 +000092
93Raise \exception{EOFError} if connection closed and no data available.
Fred Drakeb7168c31999-04-22 17:53:37 +000094Return \code{''} if no cooked data available otherwise. Do not block
Fred Drake658cef01999-03-15 15:44:18 +000095unless in the midst of an IAC sequence.
96\end{methoddesc}
97
Fred Drakeb7168c31999-04-22 17:53:37 +000098\begin{methoddesc}{read_very_lazy}{}
Fred Drake658cef01999-03-15 15:44:18 +000099Return any data available in the cooked queue (very lazy).
100
101Raise \exception{EOFError} if connection closed and no data available.
Fred Drakeb7168c31999-04-22 17:53:37 +0000102Return \code{''} if no cooked data available otherwise. This method
103never blocks.
Fred Drake658cef01999-03-15 15:44:18 +0000104\end{methoddesc}
105
Martin v. Löwis1da9c572002-11-04 09:56:00 +0000106\begin{methoddesc}{read_sb_data}{}
107Return the data collected between a SB/SE pair (suboption begin/end).
108The callback should access these data when it was invoked with a
109\code{SE} command. This method never blocks.
110
111\versionadded{2.3}
112\end{methoddesc}
113
Fred Drakeb7168c31999-04-22 17:53:37 +0000114\begin{methoddesc}{open}{host\optional{, port}}
Fred Drake658cef01999-03-15 15:44:18 +0000115Connect to a host.
Fred Drake658cef01999-03-15 15:44:18 +0000116The optional second argument is the port number, which
Fred Drakeab1df4f2001-07-06 20:23:02 +0000117defaults to the standard Telnet port (23).
Fred Drake658cef01999-03-15 15:44:18 +0000118
Fred Drakeb7168c31999-04-22 17:53:37 +0000119Do not try to reopen an already connected instance.
Fred Drake658cef01999-03-15 15:44:18 +0000120\end{methoddesc}
121
Fred Drakeb7168c31999-04-22 17:53:37 +0000122\begin{methoddesc}{msg}{msg\optional{, *args}}
123Print a debug message when the debug level is \code{>} 0.
Fred Drake658cef01999-03-15 15:44:18 +0000124If extra arguments are present, they are substituted in the
125message using the standard string formatting operator.
126\end{methoddesc}
127
Fred Drakeb7168c31999-04-22 17:53:37 +0000128\begin{methoddesc}{set_debuglevel}{debuglevel}
129Set the debug level. The higher the value of \var{debuglevel}, the
130more debug output you get (on \code{sys.stdout}).
Fred Drake658cef01999-03-15 15:44:18 +0000131\end{methoddesc}
132
Fred Drakeb7168c31999-04-22 17:53:37 +0000133\begin{methoddesc}{close}{}
Fred Drake658cef01999-03-15 15:44:18 +0000134Close the connection.
135\end{methoddesc}
136
Fred Drakeb7168c31999-04-22 17:53:37 +0000137\begin{methoddesc}{get_socket}{}
Fred Drake658cef01999-03-15 15:44:18 +0000138Return the socket object used internally.
139\end{methoddesc}
140
Fred Drakeb7168c31999-04-22 17:53:37 +0000141\begin{methoddesc}{fileno}{}
142Return the file descriptor of the socket object used internally.
Fred Drake658cef01999-03-15 15:44:18 +0000143\end{methoddesc}
144
Fred Drakeb7168c31999-04-22 17:53:37 +0000145\begin{methoddesc}{write}{buffer}
Fred Drake658cef01999-03-15 15:44:18 +0000146Write a string to the socket, doubling any IAC characters.
Fred Drakeb7168c31999-04-22 17:53:37 +0000147This can block if the connection is blocked. May raise
148\exception{socket.error} if the connection is closed.
Fred Drake658cef01999-03-15 15:44:18 +0000149\end{methoddesc}
150
Fred Drakeb7168c31999-04-22 17:53:37 +0000151\begin{methoddesc}{interact}{}
Fred Drakeab1df4f2001-07-06 20:23:02 +0000152Interaction function, emulates a very dumb Telnet client.
Fred Drake658cef01999-03-15 15:44:18 +0000153\end{methoddesc}
154
Fred Drakeb7168c31999-04-22 17:53:37 +0000155\begin{methoddesc}{mt_interact}{}
156Multithreaded version of \method{interact()}.
Fred Drake658cef01999-03-15 15:44:18 +0000157\end{methoddesc}
158
Fred Drakeb7168c31999-04-22 17:53:37 +0000159\begin{methoddesc}{expect}{list\optional{, timeout}}
Fred Drake658cef01999-03-15 15:44:18 +0000160Read until one from a list of a regular expressions matches.
161
162The first argument is a list of regular expressions, either
163compiled (\class{re.RegexObject} instances) or uncompiled (strings).
Fred Drakeb7168c31999-04-22 17:53:37 +0000164The optional second argument is a timeout, in seconds; the default
Thomas Woutersf8316632000-07-16 19:01:10 +0000165is to block indefinitely.
Fred Drake658cef01999-03-15 15:44:18 +0000166
167Return a tuple of three items: the index in the list of the
168first regular expression that matches; the match object
169returned; and the text read up till and including the match.
170
171If end of file is found and no text was read, raise
172\exception{EOFError}. Otherwise, when nothing matches, return
173\code{(-1, None, \var{text})} where \var{text} is the text received so
174far (may be the empty string if a timeout happened).
175
Fred Drakeab1df4f2001-07-06 20:23:02 +0000176If a regular expression ends with a greedy match (such as \regexp{.*})
Fred Drake658cef01999-03-15 15:44:18 +0000177or if more than one expression can match the same input, the
Thomas Woutersf8316632000-07-16 19:01:10 +0000178results are indeterministic, and may depend on the I/O timing.
Fred Drake658cef01999-03-15 15:44:18 +0000179\end{methoddesc}
Fred Drake38e5d272000-04-03 20:13:55 +0000180
Martin v. Löwisb0162f92001-09-06 08:51:38 +0000181\begin{methoddesc}{set_option_negotiation_callback}{callback}
182Each time a telnet option is read on the input flow, this
183\var{callback} (if set) is called with the following parameters :
184callback(telnet socket, command (DO/DONT/WILL/WONT), option). No other
185action is done afterwards by telnetlib.
186\end{methoddesc}
187
Fred Drake38e5d272000-04-03 20:13:55 +0000188
189\subsection{Telnet Example \label{telnet-example}}
190\sectionauthor{Peter Funk}{pf@artcom-gmbh.de}
191
192A simple example illustrating typical use:
193
194\begin{verbatim}
195import getpass
196import sys
197import telnetlib
198
199HOST = "localhost"
200user = raw_input("Enter your remote account: ")
201password = getpass.getpass()
202
203tn = telnetlib.Telnet(HOST)
204
205tn.read_until("login: ")
206tn.write(user + "\n")
207if password:
208 tn.read_until("Password: ")
209 tn.write(password + "\n")
210
211tn.write("ls\n")
212tn.write("exit\n")
213
214print tn.read_all()
215\end{verbatim}