From a356d803be9cd0003b485a6c4cbb2b2844e43f25 Mon Sep 17 00:00:00 2001 From: Ryan Voots Date: Fri, 12 May 2017 15:39:44 -0700 Subject: [PATCH] Add some ASN db creation scripts --- asndb/README.md | 1 + asndb/mkasn.pl | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 asndb/README.md create mode 100755 asndb/mkasn.pl diff --git a/asndb/README.md b/asndb/README.md new file mode 100644 index 0000000..1f7c122 --- /dev/null +++ b/asndb/README.md @@ -0,0 +1 @@ +ASN db comes from https://iptoasn.com/ diff --git a/asndb/mkasn.pl b/asndb/mkasn.pl new file mode 100755 index 0000000..5dd2cd7 --- /dev/null +++ b/asndb/mkasn.pl @@ -0,0 +1,39 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use autodie; +use DBI; + +sub fmtip($) { + my $ip = shift; + sprintf "%03d.%03d.%03d.%03d", split(/\./, $ip); +} + +open(my $tsv, "<", "ip2asn-v4.tsv"); + +my $dbh = DBI->connect("dbi:SQLite:dbname=asn.db", "", "", {RaiseError => 1}); + +$dbh->do("DROP TABLE IF EXISTS asn;"); +$dbh->do(q{CREATE TABLE asn ( + start varchar(15) NOT NULL, + end varchar(15) NOT NULL, + asn INTEGER NOT NULL, + country TEXT, + desc TEXT +); +CREATE INDEX asn_start ON asn (start); +CREATE INDEX asn_end ON asn (end); +CREATE INDEX ON asn_asn ON asn (asn);}); + +$dbh->begin_work; +my $insert_sth = $dbh->prepare("INSERT INTO asn (start, end, asn, country, desc) VALUES (?, ?, ?, ?, ?);"); + +while (my $line = <$tsv>) { + chomp $line; + my ($start, $end, $asn, $country, $desc) = split /\t/, $line; + + printf "%s - %s\n", fmtip($start), fmtip($end); + $insert_sth->execute(fmtip $start, fmtip $end, $asn, $country, $desc); +} +$dbh->commit();