实现private static List<String> execCommands(Session session, String[] commands),使其能够执行多条Linux命令,并将结果以List形式返回
时间: 2024-02-24 21:59:19 浏览: 122
可以使用Java的ProcessBuilder类来执行Linux命令,然后将结果存储在List中返回。以下是实现execCommands方法的代码示例:
```java
private static List<String> execCommands(Session session, String[] commands) throws IOException {
List<String> output = new ArrayList<>();
for (String command : commands) {
ProcessBuilder pb = new ProcessBuilder("bash", "-c", command);
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
output.add(line);
}
try {
process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
reader.close();
process.destroy();
}
return output;
}
```
该方法接受一个Session对象和一个String数组作为参数,其中Session对象是通过JSch库建立的SSH连接,String数组存储要执行的Linux命令。对于每个命令,该方法创建一个ProcessBuilder对象,使用bash -c参数执行命令,并将结果存储在List中。最后,该方法返回包含所有命令结果的List。
阅读全文