我想开发一个将“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 );
}
}
答案 0 :(得分:0)
将您的webapp拆分为两部分,一部分负责与浏览器交互,另一部分负责实际工作。
前端使用
生成HTML(可能使用JSP,因为您使用的是Java)后端是Java代码,用于在请求时实际执行'ping'或'telnet',并捕获结果,以便可以通过前端报告它们。虽然您可以通过Java实现这两种协议,但启动现有的ping和ssh客户端(ssh = secure telnet; telnet应该不),将其输出重定向到文件,然后返回文件的内容。
第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
}