package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
class zhuabao {
public void getvalue() throws IOException {
List commands = new ArrayList<>();
commands.add("tshark");
commands.add("-r");
commands.add("F:\\bao\\ipsec.pcap");
commands.add("-O");
commands.add("isakmp");
commands.add("-Y");
commands.add("isakmp");
commands.add("-T");
commands.add("fields");
commands.add("-e");
commands.add("isakmp.ike.attr.encryption_algorithm");
commands.add("-e");
commands.add("isakmp.ike.attr.authentication_method");
commands.add("-e");
commands.add("isakmp.ike.attr.hash_algorithm");
ProcessBuilder tshark = new ProcessBuilder(commands);
Process process = tshark.start();
try (BufferedReader bfReader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
for (; ; ) {
String encryption_algorithm= bfReader.readLine();
if (encryption_algorithm==null){
System.out.println("加密算法的值为空");
break;
}
else
System.out.println("加密算法的值为:"+encryption_algorithm );
}
} catch (Exception e) {
}
}
}
public class pan {
public static void main(String[] args) {
zhuabao zb = new zhuabao();
try {
zb.getvalue();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
加密算法的值为:128 10 20
加密算法的值为:128 10 20
加密算法的值为:
加密算法的值为:
加密算法的值为:
加密算法的值为:
加密算法的值为:
加密算法的值为:
加密算法的值为:
加密算法的值为:
加密算法的值为空
我想要获取list中执行tshark命令所运行出来的值,我写的获取isakmp.ike.attr.encryption_algorithm这个加密算法地值,有值就输出来,没有值就输出为空,但是运行结果就是把后面另外两个值也一起输出来了,我想输出地是加密算法地值为:128。然后没有值的地方显示为空,但是它只有最后一项显示值为空,中间的并没有显示。想请问如何实现想要的效果