【发布时间】:2015-01-04 14:27:58
【问题描述】:
我试图通过 Java 发送带有 Linux 命令的电子邮件,我承认我对 Linux 了解不多,但我认为我已经尝试了所有方法,但我真的很困惑,如果有人能对此有所了解会很棒
我将应用程序导出到一个 war 文件并上传到一个 linux 服务器 (CentOS)
这就是我正在做的事情:我正在使用浏览器从 servlet 触发代码
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String cmd = "mail -s \"Test Email\" my@email.com < /usr/share/apache-tomcat-7.0.42/webapps/slots_dashboard/alert_mail.txt";
//String cmd = "whoami"; //returns tomcat
ProcessBuilder pb = new ProcessBuilder(cmd);
Process proc = pb.start();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
resp.getWriter().println(s);
}
while ((s = stdError.readLine()) != null) {
resp.getWriter().println(s);
}
}
我得到的错误是: HTTP 状态 500 - 无法运行程序 "mail -s "Test Email" my@email.com
如果我将命令更改为 whoami,我会在响应中得到 tomcat,我什至去了服务器计算机并从那里尝试了命令,没有问题。各位大侠,请帮忙:(
【问题讨论】: