blob: e7a320b74fe9b996918abe03e4ae19b7639e0d30 [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
<title>Telnet Task</title>
</head>
<body>
<h2><a name="telnet">Telnet</a></h2>
<h3>Description</h3>
Task to automate a remote telnet session. The task uses
nested <tt>&lt;read&gt;</tt> to indicate strings to wait for, and
<tt>&lt;write&gt;</tt> tags to specify text to send.
<p>If you do specify a userid and password, the system will
assume a common unix prompt to wait on. This behavior can be easily over-ridden.</p>
<p><b>Note:</b> This task depends on external libraries not included in the Ant distribution.
See <a href="../install.html#librarydependencies">Library Dependencies</a> for more information.</p>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
<th>Attribute</th>
<th>Values</th>
<th>Required</th>
</tr>
<tr>
<td>userid</td>
<td>the login id to use on the telnet server.</td>
<td>Only if password is specified</td>
</tr>
<tr>
<td>password</td>
<td>the login password to use on the telnet server.</td>
<td>Only if userid is specified</td>
</tr>
<tr>
<td>server</td>
<td>the address of the remote telnet server.</td>
<td>Yes</td>
</tr>
<tr>
<td>port</td>
<td>the port number of the remote telnet server. Defaults to port 23.</td>
<td>No</td>
</tr>
<tr>
<td>initialCR</td>
<td>send a cr after connecting (&quot;yes&quot;). Defaults to &quot;no&quot;.</td>
<td>No</td>
</tr>
<tr>
<td>timeout</td>
<td>set a default timeout to wait for a response. Specified in seconds. Default is no timeout.</td>
<td>No</td>
</tr>
</table>
<h3><a name="nested">Nested Elements</a></h3>
The commands to send to the server, and responses to wait for, are
described as nested elements.
<h4>read</h4>
<p>declare (as a text child of this element) a string to wait for.
The element supports the timeout attribute, which overrides any
timeout specified for the task as a whole. It also has a <tt>string</tt>
attribute, which is an alternative to specifying the string as
a text element.
</p>
<i>Always declare an opening and closing
<code>&lt;read&gt;</code> element to ensure that statements are not sent before
the connection is ready, and that the connection is not broken before
the final command has completed.
</i>
<h4>write</h4>
<p>describes the text to send to the server. The <tt>echo</tt> boolean
attribute controls whether the string is echoed to the local log;
this is "true" by default
</p>
<h3>Examples</h3>
A simple example of connecting to a server and running a command. This assumes
a prompt of &quot;ogin:&quot; for the userid, and a prompt of &quot;assword:&quot;
for the password.
<blockquote><pre>
&lt;telnet userid=&quot;bob&quot; password=&quot;badpass&quot; server=&quot;localhost&quot;&gt;
&lt;read&gt;/home/bob&lt;/read&gt;
&lt;write&gt;ls&lt;/write&gt;
&lt;read string=&quot;/home/bob&quot;/&gt;
&lt;/telnet&gt;
</pre></blockquote>
This task can be rewritten as:
<blockquote><pre>
&lt;telnet server=&quot;localhost&quot;&gt;
&lt;read&gt;ogin:&lt;/read&gt;
&lt;write&gt;bob&lt;/write&gt;
&lt;read&gt;assword:&lt;/read&gt;
&lt;write&gt;badpass&lt;/write&gt;
&lt;read&gt;/home/bob&lt;/read&gt;
&lt;write&gt;ls&lt;/write&gt;
&lt;read&gt;/home/bob&lt;/read&gt;
&lt;/telnet&gt;
</pre></blockquote>
A timeout can be specified at the <code>&lt;telnet&gt;</code> level or at the <code>&lt;read&gt;</code> level.
This will connect, issue a sleep command that is suppressed from displaying and wait
10 seconds before quitting.
<blockquote><pre>
&lt;telnet userid=&quot;bob&quot; password=&quot;badpass&quot; server=&quot;localhost&quot; timeout=&quot;20&quot;&gt;
&lt;read&gt;/home/bob&lt;/read&gt;
&lt;write echo=&quot;false&quot;&gt;sleep 15&lt;/write&gt;
&lt;read timeout=&quot;10&quot;&gt;/home/bob&lt;/read&gt;
&lt;/telnet&gt;
</pre></blockquote>
The task can be used with other ports as well:
<blockquote><pre>
&lt;telnet port=&quot;80&quot; server=&quot;localhost&quot; timeout=&quot;20&quot;&gt;
&lt;read/&gt;
&lt;write&gt;GET / http/0.9&lt;/write&gt;
&lt;write/&gt;
&lt;read timeout=&quot;10&quot;&gt;&amp;lt;/HTML&amp;gt;&lt;/read&gt;
&lt;/telnet&gt;
</pre></blockquote>
<p>
To use this task against the WinNT telnet service, you need to configure the service to use
classic authentication rather than NTLM negotiated authentication.
This can be done in the Telnet Server Admin app:
select "display/change registry settings", then "NTLM", then set the value of NTLM to 1.
</p>
</body>
</html>