Full Internet ASN <--> AS Name resolution
Mike Leber
mleber at he.net
Sat Jun 7 02:30:13 UTC 2003
On Fri, 6 Jun 2003, Mourad BERKANE wrote:
> Hi NANOGers,
>
> Could someone forward me a .txt file including FULL INTERNET (ARIN + RIPE +
> APNIC) ASN <--> AS Name resolution table?
>
> I don't want to compile following regional dbase :-)
>
> <ftp://ftp.arin.net/netinfo/asn.txt> ftp://ftp.arin.net/netinfo/asn.txt
> <ftp://ftp.apnic.net/pub/apnic/dbase/data/rpsl>
> ftp://ftp.apnic.net/pub/apnic/dbase/data/rpsl
> <ftp://ftp.ripe.net/ripe/dbase/> ftp://ftp.ripe.net/ripe/dbase/
Here is something I wrote that generates the .txt file you are looking
for. It's a hack. No appologies or warranties provided. ;)
It is based on the original script provided earlier by Hroi Sigurdsson
(thank you):
#!/usr/bin/perl
# extractasnames.pl
# By Mike Leber 06/06/2003
# Original By Hroi Sigurdsson
# as is, no warranty, use at your own risk.
use strict;
use Net::FTP;
my $gVerbose = $ARGV[0] eq "-v";
my @sources = qw(
ftp://ftp.ripe.net/ripe/dbase/split/ripe.db.aut-num.gz
ftp://ftp.apnic.net/public/apnic/whois-data/APNIC/split/apnic.db.aut-num.gz
ftp://ftp.radb.net/radb/dbase/arin.db.gz
ftp://ftp.radb.net/radb/dbase/radb.db.gz
ftp://ftp.arin.net/info/asn.txt
);
my %autnums;
for my $source ( @sources )
{
read_file( $source );
}
map {printf "%d: %s\n" ,$_ ,$autnums{$_}} sort {$a <=> $b} keys %autnums;
exit(0);
sub read_file
{
my( $source ) = @_;
print "$source\n" if $gVerbose;
my $host;
my $file;
my $remotefile;
($host,$remotefile) = ( $source =~ /^ftp:\/\/([^\/]+)\/(.*)$/ );
system( "mkdir data" ) if ! -e "data";
my $localfile;
($localfile) = ( $remotefile =~ /\/([a-z\.\-]+)$/ );
$localfile = "data/$localfile";
print "host: $host rfile: $remotefile lfile: $localfile\n"
if $gVerbose;
my ($dev,$ino,$mode,$nlink,$uid,$gid,
$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)
= stat( $localfile );
# refresh atleast once a month.
if ( (! -e $localfile) || time - $mtime > 30 * 24 * 3600 )
{
my $ftp = Net::FTP->new($host)
|| die "Can't connect: $@\n";
$ftp->login("anonymous","me\@me.com")
|| die "Couldn't login\n";
$ftp->type("I")
|| die "Couldn't change type to binary\n";
$ftp->get($remotefile,$localfile)
|| die "Couldn't get $remotefile\n";
$ftp->quit();
print "successfully FTP'd $remotefile\n"
if $gVerbose;
}
my $lines = 0;
if ( $localfile =~ /\.gz$/ )
{
open( FILE, "gzip -d -c $localfile |" )
|| die "Unable to open $localfile";
my $autnum = 0;
my $descr = '';
while (<FILE>)
{
if(/^aut-num:\s+AS(\d+)$/)
{
$autnum = $1;
}
if($autnum && /^descr:\s+(.*)$/)
{
$descr = $1;
$autnums{$autnum} = $descr;
$autnum = 0;
}
$lines++;
}
close FILE;
}
else
{
open( FILE, "< $localfile" )
|| die "Unable to open $localfile";
while (<FILE>)
{
if(/^\s+(\d+)\s+(\S+)\s/)
{
my $autnum = $1;
my $descr = $2;
$autnums{$autnum} = $descr;
}
$lines++;
}
close FILE;
}
print "lines: $lines\n"
if $gVerbose;
}
+----------------- H U R R I C A N E - E L E C T R I C -----------------+
| Mike Leber Direct Internet Connections Voice 510 580 4100 |
| Hurricane Electric Web Hosting Colocation Fax 510 580 4151 |
| mleber at he.net http://www.he.net |
+-----------------------------------------------------------------------+
More information about the NANOG
mailing list