001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package examples.unix; 019 020 import java.io.IOException; 021 import org.apache.commons.net.bsd.RLoginClient; 022 023 import examples.util.IOUtil; 024 025 /*** 026 * This is an example program demonstrating how to use the RLoginClient 027 * class. This program connects to an rlogin daemon and begins to 028 * interactively read input from stdin (this will be line buffered on most 029 * systems, so don't expect character at a time interactivity), passing it 030 * to the remote login process and writing the remote stdout and stderr 031 * to local stdout. If you don't have .rhosts or hosts.equiv files set up, 032 * the rlogin daemon will prompt you for a password. 033 * <p> 034 * On Unix systems you will not be able to use the rshell capability 035 * unless the process runs as root since only root can bind port addresses 036 * lower than 1024. 037 * <p> 038 * JVM's using green threads will likely have problems if the rlogin daemon 039 * requests a password. This program is merely a demonstration and is 040 * not suitable for use as an application, especially given that it relies 041 * on line buffered input from System.in. The best way to run this example 042 * is probably from a Win95 dos box into a Unix host. 043 * <p> 044 * Example: java rlogin myhost localusername remoteusername vt100 045 * <p> 046 * Usage: rlogin <hostname> <localuser> <remoteuser> <terminal> 047 * <p> 048 ***/ 049 050 // This class requires the IOUtil support class! 051 public final class rlogin 052 { 053 054 public static final void main(String[] args) 055 { 056 String server, localuser, remoteuser, terminal; 057 RLoginClient client; 058 059 if (args.length != 4) 060 { 061 System.err.println( 062 "Usage: rlogin <hostname> <localuser> <remoteuser> <terminal>"); 063 System.exit(1); 064 return ; // so compiler can do proper flow control analysis 065 } 066 067 client = new RLoginClient(); 068 069 server = args[0]; 070 localuser = args[1]; 071 remoteuser = args[2]; 072 terminal = args[3]; 073 074 try 075 { 076 client.connect(server); 077 } 078 catch (IOException e) 079 { 080 System.err.println("Could not connect to server."); 081 e.printStackTrace(); 082 System.exit(1); 083 } 084 085 try 086 { 087 client.rlogin(localuser, remoteuser, terminal); 088 } 089 catch (IOException e) 090 { 091 try 092 { 093 client.disconnect(); 094 } 095 catch (IOException f) 096 {} 097 e.printStackTrace(); 098 System.err.println("rlogin authentication failed."); 099 System.exit(1); 100 } 101 102 103 IOUtil.readWrite(client.getInputStream(), client.getOutputStream(), 104 System.in, System.out); 105 106 try 107 { 108 client.disconnect(); 109 } 110 catch (IOException e) 111 { 112 e.printStackTrace(); 113 System.exit(1); 114 } 115 116 System.exit(0); 117 } 118 119 } 120