-1

这可能是一个愚蠢的问题,但能够做到这一点会很棒。我的网站上有一个定制的管理部分。我有一个 cron 作业设置为每天运行一次此文件 /opt/webalizerScript.sh 但是,我希望能够在任何时候轻松地从我的管理部分执行该命令,只要我想从 webalizer 更新流量统计信息。我真的不想编辑 cron,因为我不打算经常手动执行脚本,每天一次对于自动化目的来说是好的。当然,我知道我可以在 shell 中执行脚本,但这否定了我想要做的事情的全部目的。

4

2 回答 2

2

执行脚本作为对 HTTP 请求的响应是 CGI 的定义。

您的脚本将接收一些环境变量以反映请求的详细信息,以及一些标准输入。最后,无论它输出什么都将发送给客户端。您必须Content-Type: text-plain在开头输出(或其他一些内容类型)后跟一个空行。

查看配置您的网络服务器以提供 CGI 服务;在 Apache 中,您很可能只需将脚本放在一个cgi-bin目录中。

这应该足以让你开始。有很多关于 CGI 的教程以获取更多信息。

于 2012-08-02T01:42:56.347 回答
2

虽然 Amadan 的回答是一个很好的概述,但我想我会放入一个简单的 php 脚本作为演示。此脚本假定 bash 将是您的 Web 服务器的默认 shell。

demo.php 运行“ls -alFh”,但您可以替换任何命令

<html>
  <head>
    <title>Output of my bash script</title>
  </head>
  <body>
    <h1>Output of my bash script</h1>
<pre>
<?php system("ls -alFh", $rc); ?>
</pre>
    <br>
    <?php echo "Return Code: {$rc}\n"; ?>
  </body>
</html>
于 2012-08-02T02:13:44.620 回答