org.apache.commons.net.bsd

## Class RLoginClient

- java.lang.Object
- - org.apache.commons.net.SocketClient
  - - org.apache.commons.net.bsd.RExecClient
    - - org.apache.commons.net.bsd.RCommandClient
      - - org.apache.commons.net.bsd.RLoginClient

-     public class RLoginClient
      extends RCommandClient

  RLoginClient is very similar to `RCommandClient`, from which it is derived, and uses the rcmd() facility implemented in RCommandClient to implement the functionality of the rlogin command that first appeared in 4.2BSD Unix. rlogin is a command used to log in to a remote machine from a trusted host, sometimes without issuing a password. The trust relationship is the same as described in the documentation for `RCommandClient`.

  As with virtually all the client classes in org.apache.commons.net, this class derives from SocketClient. But it relies on the connection methods defined in RcommandClient which ensure that the local Socket will originate from an acceptable rshell port. The way to use RLoginClient is to first connect to the server, call the `rlogin()` method, and then fetch the connection's input and output streams. Interaction with the remote command is controlled entirely through the I/O streams. Once you have finished processing the streams, you should invoke `disconnect()` to clean up properly.

  The standard output and standard error streams of the remote process are transmitted over the same connection, readable from the input stream returned by `getInputStream()`

  Unlike RExecClient and RCommandClient, it is not possible to tell the rlogind daemon to return the standard error stream over a separate connection. `getErrorStream()` will always return null. The standard input of the remote process can be written to through the output stream returned by `getOutputSream()`

  See Also:
    `SocketClient`, `RExecClient`, `RCommandClient`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_PORT` The default rlogin port.

    - ### Fields inherited from class org.apache.commons.net.bsd.RCommandClient

      `MAX_CLIENT_PORT, MIN_CLIENT_PORT`

    - ### Fields inherited from class org.apache.commons.net.bsd.RExecClient

      `_errorStream_, NULL_CHAR`

    - ### Fields inherited from class org.apache.commons.net.SocketClient

      `_defaultPort_, _hostname_, _input_, _output_, _serverSocketFactory_, _socket_, _socketFactory_, _timeout_, connectTimeout, NETASCII_EOL, remoteInetSocketAddress`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RLoginClient()` The default RLoginClient constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `rlogin(String localUserName, String remoteUserName, String terminalType)` Same as the other rlogin method, but no terminal speed is defined.
    `void` | `rlogin(String localUserName, String remoteUserName, String terminalType, int terminalSpeed)` Logins into a remote machine through the rlogind daemon on the server to which the RLoginClient is connected.

    - ### Methods inherited from class org.apache.commons.net.bsd.RCommandClient

      `connect, connect, connect, connect, connect, connect, createErrorStream, rcommand, rcommand`

    - ### Methods inherited from class org.apache.commons.net.bsd.RExecClient

      `disconnect, getErrorStream, getInputStream, getOutputStream, isRemoteVerificationEnabled, rexec, rexec, setRemoteVerificationEnabled`

    - ### Methods inherited from class org.apache.commons.net.SocketClient

      `_connectAction_, addProtocolCommandListener, applySocketAttributes, checkOpenOutputStream, connect, connect, createCommandSupport, fireCommandSent, fireReplyReceived, getCharset, getCommandSupport, getConnectTimeout, getDefaultPort, getDefaultTimeout, getHostAddress, getHostAddress, getKeepAlive, getLocalAddress, getLocalPort, getProxy, getReceiveBufferSize, getRemoteAddress, getRemoteInetSocketAddress, getRemotePort, getSendBufferSize, getServerSocketFactory, getSoLinger, getSoTimeout, getTcpNoDelay, isAvailable, isConnected, removeProtocolCommandListener, setCharset, setConnectTimeout, setDefaultPort, setDefaultTimeout, setKeepAlive, setProxy, setReceiveBufferSize, setSendBufferSize, setServerSocketFactory, setSocketFactory, setSoLinger, setSoTimeout, setTcpNoDelay, verifyRemote`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DEFAULT_PORT

          public static final int DEFAULT_PORT

      The default rlogin port. Set to 513 in BSD Unix and according to RFC 1282.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### RLoginClient

          public RLoginClient()

      The default RLoginClient constructor. Initializes the default port to `DEFAULT_PORT`.

  - ### Method Detail

    - #### rlogin

          public void rlogin(String localUserName,
                             String remoteUserName,
                             String terminalType)
                      throws IOException

      Same as the other rlogin method, but no terminal speed is defined.
      Parameters:
        `localUserName` - the local user
        `remoteUserName` - the remote user
        `terminalType` - the terminal type
      Throws:
        `IOException` - on error

    - #### rlogin

          public void rlogin(String localUserName,
                             String remoteUserName,
                             String terminalType,
                             int terminalSpeed)
                      throws IOException

      Logins into a remote machine through the rlogind daemon on the server to which the RLoginClient is connected. After calling this method, you may interact with the remote login shell through its standard input and output streams. Standard error is sent over the same stream as standard output. You will typically be able to detect the termination of the remote login shell after reaching end of file on its standard output (accessible through `getInputStream()`). Disconnecting from the server or closing the process streams before reaching end of file will terminate the remote login shell in most cases.

      If user authentication fails, the rlogind daemon will request that a password be entered interactively. You will be able to read the prompt from the output stream of the RLoginClient and write the password to the input stream of the RLoginClient.

      Parameters:
        `localUserName` - The user account on the local machine that is trying to log in to the remote host.
        `remoteUserName` - The account name on the server that is being logged in to.
        `terminalType` - The name of the user's terminal (e.g., "vt100", "network", etc.)
        `terminalSpeed` - The speed of the user's terminal, expressed as a baud rate or bps (e.g., 9600 or 38400)
      Throws:
        `IOException` - If the rlogin() attempt fails. The exception will contain a message indicating the nature of the failure.