【问题标题】:Can I execute a shell script from a web page?我可以从网页执行 shell 脚本吗?
【发布时间】:2010-10-02 19:35:43
【问题描述】:

我的网页上传了一个文件。目前,它将该文件放在由 cron 作业轮询的目录中。如果该文件存在,则 bash 脚本将作用于该文件。我讨厌我正在投票的事实。上传可能每周进行一次,但用户希望在几分钟内从他们的文件中看到结果,所以我最终每 5 分钟轮询一次。

因此,我想在上传完成后调用脚本,而不是轮询。如何让我的网页启动 bash 脚本。网页使用 JSP 编码。

【问题讨论】:

  • 请注意,您已经获得了相当的入口点 - 请确保您已在此处完成彻底的安全审核!
  • @LFSR,上传页面已经过身份验证,并且在我们的 Intranet 中。这不是问题。

标签: java jsp shell cron


【解决方案1】:

只要您没有设置SecurityManager,您就可以使用Runtime.exec 来调用可执行程序。特别是你可以运行/bin/bash(或者你的shell的任何路径)。请注意 shell 的 -c 选项。

正如 LFSR 指出的那样,这种事情可能充满安全漏洞。

【讨论】:

  • java.lang.SecurityManager。不是很时髦。主要用于小程序和 WebStart。
【解决方案2】:

您为什么不在您的应用程序中执行此操作?用 Java 实现一个 FTP 客户端并不难。肯定有开放/免费的库可以在某处完成此任务。我不相信这个脚本会做任何你在 Java 中做不到的事情。一个带有 FTP 代码的消息驱动 bean 就足够了。你的服务器不是FTP吗?嗯,安装 FTP 也没有那么难。

【讨论】:

  • 脚本做的比我们愿意用 Java 编写的要多。不是因为 Java 不能,而是 bash 中的一行使用 dsa/rsa 链接进行 rsync 需要付出相当大的努力才能在 Java 中复制。
最近更新 更多