【问题标题】:How to run a bash script(linux) in a web application embedded, using tomcat 7?如何使用tomcat 7在嵌入的Web应用程序中运行bash脚本(linux)?
【发布时间】:2012-05-28 20:09:03
【问题描述】:

我想用 java ee / servlets 运行一个 bash 脚本。 我希望它嵌入到 web 应用程序中,在 linux 操作系统中使用 tomcat 7。

【问题讨论】:

  • 来吧靴子,开始走路。 (也就是说,告诉我们您尝试了什么,以及您收到了什么样的错误消息)。祝你好运。

标签: bash jakarta-ee tomcat web-applications root


【解决方案1】:
  1. 将脚本嵌入到 Web 应用程序中,例如在 war 文件的根目录中。
  2. 应用部署后获取文件路径:

    String scriptPath = getServletContext().getRealPath("/script.sh");

  3. 使用 ProcessBuilder 类运行脚本:

    new ProcessBuilder("/bin/sh", scriptPath).start();

请注意,如果您的 servlet 容器未提取 war 文件的内容,则第 2 步可能会失败。在这种情况下,您必须将脚本作为可用资源放在类路径中,将其内容复制到临时文件中,然后在那里运行脚本。

【讨论】:

  • 此方案存在安全问题,请谨慎使用。如果在war里面放一个脚本,用户就可以看到脚本源代码。 IMO 最好使用 CGI 解决方案,因为它旨在通过设计处理外部程序。
  • 1-ok.2 和 3 :我的 servlet 中有它们?如何知道 3. 是否工作?
  • 您可以在ProcessBuilder 创建的Process 上调用getInputStream() 来跟踪脚本的输出。
【解决方案2】:

您必须搜索如何在 Tomcat 上启用和使用 CGI。

CGI(通用网关接口)定义了 Web 服务器与外部内容生成程序(通常称为 CGI 程序或 CGI 脚本)交互的方式。

来源:Apache Tomcat 7 Documentation: CGI How To

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-26
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2018-11-28
    相关资源
    最近更新 更多