jdk1.8环境下写一个可以入参为命令数组和已连接服务器的会话Session,可以执行多条Linux命令,并将所有输出结果以List形式返回的方法
时间: 2024-02-24 22:59:40 浏览: 70
执行sql语句,并将结果通过ArrayList返回。字段名统一大写 JDBC 连接数据库
4星 · 用户满意度95%
下面是一个接受命令数组和会话Session作为参数的示例代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
public class CommandExecutor {
public static List<String> executeCommands(Session session, String[] commands) throws IOException, InterruptedException, JSchException {
List<String> output = new ArrayList<>();
Channel channel = session.openChannel("shell");
channel.connect();
for (String command : commands) {
channel.getOutputStream().write((command + "\n").getBytes());
channel.getOutputStream().flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(channel.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
output.add(line);
}
}
channel.disconnect();
return output;
}
}
```
这个方法的使用方法与前面的示例相同,唯一的区别是它还需要一个已连接的会话Session作为参数。它会为每个命令创建一个新的shell并在其中执行它,然后将所有输出结果保存到List中。注意,在使用该方法之前,需要先使用JSch库建立一个SSH连接并获取一个会话Session对象。
阅读全文