1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package examples;
17
18 import java.io.IOException;
19 import org.apache.commons.net.bsd.RCommandClient;
20
21 /***
22 * This is an example program demonstrating how to use the RCommandClient
23 * class. This program connects to an rshell daemon and requests that the
24 * given command be executed on the server. It then reads input from stdin
25 * (this will be line buffered on most systems, so don't expect character
26 * at a time interactivity), passing it to the remote process and writes
27 * the process stdout and stderr to local stdout.
28 * <p>
29 * On Unix systems you will not be able to use the rshell capability
30 * unless the process runs as root since only root can bind port addresses
31 * lower than 1024.
32 * <p>
33 * Example: java rshell myhost localusername remoteusername "ps -aux"
34 * <p>
35 * Usage: rshell <hostname> <localuser> <remoteuser> <command>
36 * <p>
37 ***/
38
39
40 public final class rshell
41 {
42
43 public static final void main(String[] args)
44 {
45 String server, localuser, remoteuser, command;
46 RCommandClient client;
47
48 if (args.length != 4)
49 {
50 System.err.println(
51 "Usage: rshell <hostname> <localuser> <remoteuser> <command>");
52 System.exit(1);
53 return ;
54 }
55
56 client = new RCommandClient();
57
58 server = args[0];
59 localuser = args[1];
60 remoteuser = args[2];
61 command = args[3];
62
63 try
64 {
65 client.connect(server);
66 }
67 catch (IOException e)
68 {
69 System.err.println("Could not connect to server.");
70 e.printStackTrace();
71 System.exit(1);
72 }
73
74 try
75 {
76 client.rcommand(localuser, remoteuser, command);
77 }
78 catch (IOException e)
79 {
80 try
81 {
82 client.disconnect();
83 }
84 catch (IOException f)
85 {}
86 e.printStackTrace();
87 System.err.println("Could not execute command.");
88 System.exit(1);
89 }
90
91
92 IOUtil.readWrite(client.getInputStream(), client.getOutputStream(),
93 System.in, System.out);
94
95 try
96 {
97 client.disconnect();
98 }
99 catch (IOException e)
100 {
101 e.printStackTrace();
102 System.exit(1);
103 }
104
105 System.exit(0);
106 }
107
108 }
109