Untitled
unknown
plain_text
2 years ago
2.3 kB
4
Indexable
import expect4j.Expect4j;
import expect4j.ExpectUtils;
import expect4j.matches.Match;
import expect4j.matches.RegExpMatch;
import java.io.IOException;
public class InteractiveTerminal {
public static void main(String[] args) {
try {
ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash");
Process process = processBuilder.start();
// Tạo kết nối PTY
Expect4j expect = new Expect4j(process.getInputStream(), process.getOutputStream());
// Thêm lệnh vào terminal và đọc đầu ra
sendCommand(expect, "echo Hello");
String output1 = readOutput(expect);
sendCommand(expect, "ls -l");
String output2 = readOutput(expect);
// In đầu ra của lệnh
System.out.println("Output 1: " + output1);
System.out.println("Output 2: " + output2);
// Kết thúc kết nối
expect.close();
process.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
private static void sendCommand(Expect4j expect, String command) {
try {
// Gửi lệnh và đợi cho dấu nhắc của terminal
boolean success = ExpectUtils.expect(expect, new Match[]{
new RegExpMatch(".*\\$.*"), // Đợi cho dấu nhắc của terminal
}, command + "\r\n");
if (!success) {
System.out.println("Failed to send command: " + command);
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static String readOutput(Expect4j expect) {
try {
// Đọc đầu ra cho đến khi gặp dấu nhắc của terminal
StringBuilder output = new StringBuilder();
boolean success = ExpectUtils.expect(expect, new Match[]{
new RegExpMatch(".*\\$.*"), // Đợi cho dấu nhắc của terminal
}, output);
if (!success) {
System.out.println("Failed to read output.");
}
return output.toString().trim();
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
}
Editor is loading...
Leave a Comment