Согласно документам для 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.