使用 bufferreader 在 java 代码中读取 --traceroute 命令时搜索特定单词

Search for a specific word when reading a --traceroute command in java code using bufferreader

我正在尝试从 traceroute 输出中搜索单词 "hop",但不知何故它没有在控制台上显示该行。请让我知道哪里出错了。

这是我的代码:

import java.io.*;

public class TestExec {
  public static void main(String[] args) {
    try {
      String[] cmdarray = { "nmap", "--traceroute", "nmap.org" };
      Process p = Runtime.getRuntime().exec(cmdarray);
      BufferedReader in = new BufferedReader(new InputStreamReader(
          p.getInputStream()));
      String line = null;
      while ((line = in.readLine()) != null) {
        if (line.contains("hop")) {
          System.out.println(line);
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

几件事:

  1. 你运行在Linux中使用这个吗?如果你是,你必须运行 nmap as root。你这样做了吗?
  2. 我不太确定您要寻找的是什么。在我的 nmap --traceroute nmap.org 的 运行 中,没有包含小写单词 "hop" 的行。因此,即使您 运行 以 root 身份运行此程序,您也可能不会得到太多。 I'm fairly certain it doesn't print the word "hop" in lowercase on Windows, either.