Inet-Admins mailing list archive (inet-admins@info.east.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[inet-admins] ru-networks
Привет.
Наткнулся на ftp://ftp.lexa.ru/pub/domestic/lexa/runetworks.tar.gz
и не понял зачем так мучаться?
65Mb база данных для простой операции?
Приклеил к письму альтернативный скрипт, который делает нечто подобное,
но требует ресурсов (канал и процессор) гораздо меньше.
Пример вывода:
[vulcan:/tmp]:1012$ perl ru-lirs
ru.2com 195.98.160.0/19
ru.agtel 212.111.64.0/19
ru.astelit 195.96.64.0/19
ru.bcl 195.144.224.0/19
ru.burnet 212.0.64.0/19
ru.ccl 195.222.128.0/19
ru.cis 212.109.192.0/19
ru.cityline 195.46.160.0/19 212.46.192.0/18
ru.combellga 195.16.32.0/19
ru.comcor 212.45.0.0/19
...
Всевозможные проверки на ошибки, к сожалению, слишком привязаны
к нашему серверу статистики - пришлось вырезать.
Используйте, как хотите. Ссылки - обязательны :)
--
Игорь Винокуров
Российская Торговая Система
#!/usr/local/bin/perl
# RIPE DB location
$ripedb = "ftp://ftp.ripe.net/ripe/local-ir/allocations";
# get RIPE data
open(DATA, "/usr/bin/fetch -a -o - -p -q $ripedb 2>/dev/null |")
or die "can't execute fetch: $!\n";
# loop
while (<DATA>) {
# russian LIRs
if ($_ =~ /^ru/) {
# LIR's name
printf "%s", split;
# LIR's allocations
while (<DATA>) {
# next LIR?
last if ($_ =~ /^$/);
# extract block
s/^\t\S*\t(\S*)\t.*\n$/$1/;
# parse and expand
@fields = split(/\//); @addr = (split(/\./, $fields[0]), (0) x 4);
# results
printf " %s.%s.%s.%s/%s",
$addr[0], $addr[1], $addr[2], $addr[3], $fields[1];
}
printf "\n";
}
}
|