1

我最近开始使用 cgi。由于我必须显示某些端口的端口使用信息,我编写了以下代码:

#!/bin/bash

echo "Content-type: text/html"
echo ""
echo "<html><head><title>PortInfo</title></head><body><center>"
echo "<h1>Port 80 Usage Info</h1>"

#method1
echo "<pre> $(lsof -i :80) </pre>"

#method2
echo "$(lsof -i :80 > /home/shine/Desktop/tmp.txt)"
echo "<pre> $(cat /home/shine/Desktop/tmp.txt) </pre>" 

echo "<center>Information generated on $(date)</center>"
echo "</center></body></html>"

方法1:这里的问题是echo "<pre> $(lsof -i :80) </pre>"没有给出任何输出。

方法 2:在此方法echo "$(lsof -i :80 > /home/shine/Desktop/tmp.txt)"中,永远不会在桌面上创建名为 tmp.txt 的文件,因为它应该这样做。

重要提示:上面指定的两种方法一旦在终端中执行就可以完美运行。

4

1 回答 1

1

所以我找到了我正在寻找的答案,更像是另一种选择。

有人在某处提到了一些关于 cron 脚本的东西,所以我做了以下事情。

第一步

sudo crontab -e

输入2纳米编辑器

添加以下行:

* * * * * lsof -i :80 > /home/shine/port80.txt
* * * * * lsof -i :3000 > /home/shine/port3000.txt

注意:上面的代码每分钟会在当前用户的主目录中生成两个包含端口 80 和 3000 信息的文本文件。

ctrl+o, enter,ctrl+x保存并退出。

第二步

在apache的www目录下创建一个php文件,代码如下。

<?php

$output80 = shell_exec("cat '/home/shine/reports/port80.txt'");
echo "<pre>$output80</pre>";
$output3000 = shell_exec('cat "/home/shine/reports/port3000.txt"');
echo "<pre>$output3000</pre>";

?>

这是我目前能想到的让 lsof 在网页上工作的唯一方法。

于 2013-11-12T12:00:11.993 回答