目的:我尝试在exec
命令中使用2 string 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();
%>
发布于 2012-10-10 13:25:43
我不知道你所说的不允许它们是什么意思,但很明显,你调用脚本的方式是行不通的。
cmd + username + password
这将产生一个类似于/tools/scripts/jspTest.shmyusernamemypassword
的字符串。
如果Java试图执行此命令,系统将找不到该命令(除非您在脚本名称中嵌入了用户名/密码)。我认为您可能需要调整传递这些值的方式(作为正确的参数)。
https://stackoverflow.com/questions/12815415
复制相似问题