Назад | Перейти на главную страницу

Вручную создать dnscache.txt для AWStats

Согласно документам для AWStats:

AWStats может выполнять обратный поиск DNS через статический файл кэша DNS, который ранее был создан вручную.

Поиск в документации, а также поиск в Google оставляет мне один вопрос. Как мне вручную создать файл кэша DNS? Есть ли команда Linux для этого, которую я еще не нашел? Это на машине Centos 5.5.

Как сказано ниже, вы можете использовать любой текстовый редактор, в котором хотите создать текстовый файл с форматом ipaddress resolved_hostname, что-то вроде этого:

192.168.1.11    websrv1
192.168.1.12    websrv2
192.168.1.13    websrv3

Не забудьте установить DNSLookup=2.


Я ожидал, что смогу создать файл из существующей информации, такой как журналы Apache.

Конечно, вы можете сделать это, получив IP-адрес от Apache access_log и используйте такие инструменты, как: dig, host, resolveip, ... разрешить имя хоста, примерно так:

$ 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).

Из того же руководства, которое здесь написано

Примечание. Формат файла кэша DNS - это 'minsince1970 ipaddress resolved_hostname' или просто 'ipaddress resolved_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.