001 /*
002 * Copyright 2001-2005 The Apache Software Foundation
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package examples;
017
018 import java.io.IOException;
019 import org.apache.commons.net.bsd.RExecClient;
020
021 /***
022 * This is an example program demonstrating how to use the RExecClient class.
023 * This program connects to an rexec server and requests that the
024 * given command be executed on the server. It then reads input from stdin
025 * (this will be line buffered on most systems, so don't expect character
026 * at a time interactivity), passing it to the remote process and writes
027 * the process stdout and stderr to local stdout.
028 * <p>
029 * Example: java rexec myhost myusername mypassword "ps -aux"
030 * <p>
031 * Usage: rexec <hostname> <username> <password> <command>
032 * <p>
033 ***/
034
035 // This class requires the IOUtil support class!
036 public final class rexec
037 {
038
039 public static final void main(String[] args)
040 {
041 String server, username, password, command;
042 RExecClient client;
043
044 if (args.length != 4)
045 {
046 System.err.println(
047 "Usage: rexec <hostname> <username> <password> <command>");
048 System.exit(1);
049 return ; // so compiler can do proper flow control analysis
050 }
051
052 client = new RExecClient();
053
054 server = args[0];
055 username = args[1];
056 password = args[2];
057 command = args[3];
058
059 try
060 {
061 client.connect(server);
062 }
063 catch (IOException e)
064 {
065 System.err.println("Could not connect to server.");
066 e.printStackTrace();
067 System.exit(1);
068 }
069
070 try
071 {
072 client.rexec(username, password, command);
073 }
074 catch (IOException e)
075 {
076 try
077 {
078 client.disconnect();
079 }
080 catch (IOException f)
081 {}
082 e.printStackTrace();
083 System.err.println("Could not execute command.");
084 System.exit(1);
085 }
086
087
088 IOUtil.readWrite(client.getInputStream(), client.getOutputStream(),
089 System.in, System.out);
090
091 try
092 {
093 client.disconnect();
094 }
095 catch (IOException e)
096 {
097 e.printStackTrace();
098 System.exit(1);
099 }
100
101 System.exit(0);
102 }
103
104 }
105