在远程计算机中运行命令的Web应用程序

时间:2016-02-03 10:47:17

标签: java web telnet ping

我想开发一个将“ping”或“telnet”等命令运行到远程主机的Web应用程序。 应该可以从任何机器访问该应用程序。

例如,我应该可以从任何地方打开到家用电脑的telnet会话。 我需要的想法不是代码。

public class Ping extends HttpServlet{  
    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{
        Process p = Runtime.getRuntime().exec("ping google.com");

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

        String res=""; 
        String s = ""; while ((s = inputStream.readLine()) != null) {res=res+s+"\n";}

        request.setAttribute( "test", res );

        this.getServletContext().getRequestDispatcher( "/WEB-INF/test.jsp" ).forward( request, response );
    }
}

1 个答案:

答案 0 :(得分:0)

将您的webapp拆分为两部分,一部分负责与浏览器交互,另一部分负责实际工作。

  1. 前端使用

    生成HTML(可能使用JSP,因为您使用的是Java)
    • 标有“ping”的按钮,按下按钮后,发送表单并显示ping结果
    • 标有'telnet'的文本输入,带有标记为'send'的按钮,当按下该按钮时,发送表单并显示命令的输出
  2. 后端是Java代码,用于在请求时实际执行'ping'或'telnet',并捕获结果,以便可以通过前端报告它们。虽然您可以通过Java实现这两种协议,但启动现有的ping和ssh客户端(ssh = secure telnet; telnet应该),将其输出重定向到文件,然后返回文件的内容。

  3. 第2部分根本不需要知道它是从第1部分使用的 - 它是纯粹的Java代码,它实现了像

    这样的东西
    public static String ping(String ip, int timeoutMs) {
       // returns ping output as a String, or error if timeout reached
    }
    
    public static String telnet(String ip, int port, String command, int timeoutMs) {
       // returns output of ssh -c command to chosen ip:port
       // must have public-key login to chosen machine for this to work 
       //   without password prompts
       // returns error description if timeout reached 
    }