-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathShellExample.java
More file actions
29 lines (27 loc) · 960 Bytes
/
ShellExample.java
File metadata and controls
29 lines (27 loc) · 960 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package ronnie_dong_expect_for_java;
import java.util.regex.Pattern;
/**
* Demonstrates calling bash from Java using Expect-for-java from ronniedong
*/
public class ShellExample {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder("bash");
builder.redirectErrorStream(true);
Process shell = builder.start();
Expect expect = new Expect(shell.getInputStream(), shell.getOutputStream());
String [] cmds = { "pwd", "ls", "exit" };
// Consume all output by allowing . to match newline
Object [] anyPat = new Object[] { Pattern.compile(".+", Pattern.DOTALL)};
for (String cmd : cmds) {
System.out.println("Sending '" + cmd + "'");
expect.send(cmd + "\n");
int rc = expect.expect(1, anyPat);
if (Expect.RETV_TIMEOUT == rc)
System.out.println("Timeout");
else
System.out.println("rc=" + rc + ", match=>" + expect.match + "<");
}
expect.close();
shell.destroy();
}
}