1

最近CGを使い始めました。特定のポートに関するポート使用情報を表示する必要があるため、次のコードを作成しました。

#!/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 スクリプトについて言及していたので、私は次のことを行いました。

ステップ I :

sudo crontab -e

2nanoエディターに入る

次の行を追加します。

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

注: 上記のコード行は、現在のユーザーのホーム ディレクトリにポート 80 と 3000 の情報を含む 2 つのテキスト ファイルを毎分生成します。

ctrl+oenterctrl+x保存して終了します。

ステップ II :

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 を Web ページで機能させる唯一の方法だと思います。

于 2013-11-12T12:00:11.993 に答える