我最近开始使用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的文件,因为它应该这样做。
重要说明: 上述两种方法在终端中执行后都会完美运行。
答案 0 :(得分:1)
所以我找到了我正在寻找的答案,更像是另类。
有人提到某处,有关cron脚本的内容,所以我做了以下内容。
第一步:
sudo crontab -e
输入2
纳米编辑器
添加以下行:
* * * * * lsof -i :80 > /home/shine/port80.txt
* * * * * lsof -i :3000 > /home/shine/port3000.txt
注意:上面的代码行将生成两个包含端口80&amp;的文本文件。 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工作。