web-dev-qa-db-ja.com

AWStatsのdnscache.txtを手動で作成します

AWStatsのドキュメントによると:

AWStatsは、以前に手動で作成された静的DNSキャッシュファイルを介して逆引きDNSルックアップを実行できます。

ドキュメントを検索するだけでなく、かなりのグーグルを検索すると、1つの質問が残ります。 DNSキャッシュファイルを手動で作成するにはどうすればよいですか?これを行うためのLinuxコマンドはまだ見つかりませんか?これはCentos5.5マシン上にあります。

3
John Gardeniers

下に記載されているように、ipaddress resolved_hostname形式のテキストファイルを作成する任意のテキストエディタを使用できます。次のようになります。

192.168.1.11    websrv1
192.168.1.12    websrv2
192.168.1.13    websrv3

DNSLookup=2を設定することを忘れないでください。


Apacheログなどの既存の情報からファイルを作成できると思っていました。

もちろん、Apacheのaccess_logからIPアドレスを取得し、DigHostresolveip、...などのツールを使用することでそれを行うことができます。次のようなホスト名に解決します。

$ awk '{ print $1 }' access_log | sort | uniq | \
while read ip; do \
    if [ `Dig +short -x $ip | sed 's/\(.*\)\./\1/' | wc -l` -eq 1 ]; then \
        echo -e $ip\\t$(Dig +short -x $ip | sed 's/\(.*\)\./\1/') >> dnscache.txt; \
    fi; \
done

このファイルの更新を続行するには、上記のコマンドをcronジョブとして実行し、特定の時間範囲(cron間隔に等しい)のログのみをフィルター処理します。

3
quanta

ここに書かれているのと同じマニュアルから

注:DNSキャッシュファイルの形式は、「minsince1970ipaddressresolved_hostname」または「ipaddressresolved_hostname」です。

したがって、次のようなことを行うことで生成できます。

Host -t a google.com | awk '{ print $4 " " $1 }' > dnscache.txt

または(より可能性が高いように)IPを持っている場合

for ip in 8.8.8.8; do 
    name=`Host $ip | cut -d ' ' -f 5`
    if [ X"3(NXDOMAIN)" != X"$name" ]; then
        echo "$ip $name"
    fi
done > dnscache.txt

本当に、もっとエラーチェックをして、awstatsよりも速く動作する何かをしたいと思うでしょうが。

2
AFresh1