有没有更好的方法来检查远程服务器上Windows服务的状态

时间:2019-07-04 06:52:37

标签: java

我有一个Java函数,该函数获取服务器IP并检查该服务器上特定Windows服务的状态(正在运行或已停止)。在运行代码的服务器上检查服务状态时,它会在几秒钟内运行。但是,在检查同一域中另一台服务器(远程服务器)上的服务状态时,会花费很多时间。

是否有更好的方法来执行此任务?下面是我正在使用的功能。

public boolean checkService(String PSIP) {
    try {
        Process p = Runtime.getRuntime().exec("sc \\\\" + PSIP + " query smpolicysrv");

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line = reader.readLine();
        while (line != null) {
            //System.out.println(line+"\n");
            if (line.trim().startsWith("STATE"))
            {

                if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("1")) {
                    System.out.println("Stopped");
                    return false;
                } else
                if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("2"))
                    System.out.println("Startting....");
                else
                if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("3"))
                    System.out.println("Stopping....");
                else
                if (line.trim().substring(line.trim().indexOf(":") + 1, line.trim().indexOf(":") + 4).trim().equals("4")) {
                    System.out.println("Running");
                    return true;
                }
            }
            line = reader.readLine();
        }

    } catch (IOException e1) {}
    return false;
}

0 个答案:

没有答案