1

目标:我试图在exec命令中使用 2 个字符串 var 作为 shell 脚本的参数。

字符串从 HTML 前端很好地传递,但 exec 不允许它们在 exec 字符串中。

我错过了什么?

<%@page import="java.io.*"%>
<%@page import="java.util.*"%>

<html>
<head>
    <title> Test</title>
<head/>

<body>
<%
String username, password;

if(request.getParameter("txtUserName") == null)
    username = "";
else
    username = request.getParameter("txtUserName");

if(request.getParameter("txtPassword") == null)
    password = "";
else
    password = request.getParameter("txtPassword");


Runtime r = Runtime.getRuntime();
Process p = null;
String s = null;
String cmd = "/tools/scripts/jspTest.sh";

p = r.exec(cmd + username + password);
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line = null;
while((line = br.readLine()) != null){
    out.println(line);
}

p.waitFor();
%>
4

1 回答 1

1

我不知道你的意思是不会允许他们,但很明显你调用脚本的方式是行不通的。

cmd + username + password

这将产生一个字符串,如/tools/scripts/jspTest.shmyusernamemypassword.

如果 Java 尝试执行此操作,系统将不会找到该命令(除非您在脚本名称中嵌入了用户名/密码)。我认为您可能需要调整传递这些值的方式(作为正确的参数)。

于 2012-10-10T13:25:43.223 回答