通过jsp运行net view命令



以下代码通过.java文件成功运行,但如果我尝试通过.jsp文件运行,则不会运行。

如果我删除IP地址和域,它会成功运行。

我包括<%@jsp页面上的页面导入="java.io.*"%>。任何帮助都将不胜感激。非常感谢。

String[] commands = new String[]{"cmd", "/c", "net", "view", "IPADDRESSHERE", "/domain:DOMAIN"};
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(commands);
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String strLine;
while ((strLine = input.readLine()) != null)   {    
System.out.println(strLine);
}

TestServlet.java

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
 * @see HttpServlet#HttpServlet()
 */
public TestServlet() {
    super();
    // TODO Auto-generated constructor stub
}
/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
    Runtime rt = Runtime.getRuntime();
    Process pr = rt.exec("net view SHARENAMEGOESHERE");
    pr.wait();
    BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
    BufferedWriter output = new BufferedWriter(new FileWriter("networklist.properties", false));
    String [] nextLine;
    String strLine;
    String copied;
    String newString = null;
    StringBuilder toFile = new StringBuilder();                 
    while ((strLine = input.readLine()) != null)   {
        out.println(strLine+"<br>");    
       if(strLine.indexOf("Print") != -1){
           copied = strLine;                   
           copied = copied.replaceAll("\s+", "");                 
           nextLine = copied.split("Print");
           if(nextLine.length == 2){                       
               newString = nextLine[1] + "=" + nextLine[0]+"n";
               toFile.append(newString); 
               out.println(newString+"<br>");
           }                   
       }
    }

    if(null != newString){
        output.write(toFile.toString());
    }
    input.close();
    output.close();
    } catch (Exception e){
        e.printStackTrace();
        out.println(e.getMessage());
    } finally {
        out.close();
    }

}
/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request,response);
}

}

不要在JSP中运行它。在HttpServlet中执行此操作,并在需要时从JSP调用它。JSP并不意味着里面有复杂的java代码,因为这是很难调试和识别问题的。

看起来您可能错过了一些导入语句。

还有一件事,你想在屏幕上打印已读文件吗??那么应该使用out.println而不是System.out.println。System.out.println将在控制台上打印,而不是在页面上打印。

希望这能有所帮助。

不过,我的建议也是一样的,您应该将这些代码移动到适当的类servlet或实用程序类。

最新更新