web-dev-qa-db-ja.com

Apacheログから訪問者のIPを取得する必要がある

ウェブサイトの訪問者のIPを保存したいのですが、PHPを使用したいと思います。 cronを使用する必要がありますか、それとも訪問者のIPはどのように自動的に保存されますか?

3
stacy

Apacheはデフォルトで各ビジターのIPをすでに記録しています。次のようにawksortを組み合わせることで、そのファイルからユニークビジターのリストを取得できます。

awk '{print $1}' <log_path> | sort -u

ここで、Apacheログへのパスは/var/log/httpd/access_log Red Hatタイプのシステムおよび/var/log/Apache2/access.log Ubuntuタイプ。

もちろん、それらを一意にする必要はないので、必要ない場合はsortを削除できます。

編集:

@ facundo-victorが一意の訪問者が必要かどうかを指摘したように、awkを使用してすべてを実行し、表示された内容を追跡し、それらを初めて印刷するだけで追加のプロセスを節約できます。

awk '{if (!unique[$1]++) {print $1}}' <log_path>

ただし、ログファイルに最初に表示される順序であり、ASCIIでソートされていません。

また、これはログの最初のフィールドがIPアドレスであると想定しています。これは、Apacheの多くの新しいバージョンのデフォルトですが、必ずしもそうである必要はありません。

5
Eric Renouf