Я столкнулся со странным текстом ответа от моего веб-приложения, работающего в Tomcat. По сути, мое веб-приложение будет вызывать приложение ping, запущенное в команде, и результат будет возвращен клиенту.
Код такой:
@GET
@Path("/pingport/{ip}/{port}")
public Response pingIpPort(@PathParam("ip") String ip, @PathParam("port") String port) {
String result = null;
String command = "/tmp/paping -p " + port +" -c 5 " + ip;
try {
// ProcessBuilder builder = new ProcessBuilder(
// "bash", "-c", "sudo hping3 -S -c 5 -p "+ port + " " + ip );
// builder.redirectErrorStream(true);
// Process proc = builder.start();
Process proc = Runtime.getRuntime().exec(command);
BufferedReader reader =
new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = "";
while((line = reader.readLine()) != null) {
// System.out.print(line + "\n");
LOGGER.warning(line + "\n");
if(line.contains("Minimum")) {
result=line;
}
}
proc.waitFor();
} catch (IOException | InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Read the output
return Response.status(200).entity(result).build();
}
Когда я перехожу на упомянутый URL, он дает странную кодировку, подобную этой:
Минимум = [01; 34м21,46мс [22; 0м, Максимум = [01; 34м27,20мс [22; 0м,
Среднее = [01; 34м24,31мс [22; 0м
]
Но если я запускаю команду прямо из терминала в Ubuntu, это будет выглядеть так:
Minimum = 20.69ms, Maximum = 28.48ms, Average = 23.77ms
Вы знаете, в чем проблема?