Support offline update of oui.txt and MIBs bundle
This commit is contained in:
@@ -50,6 +50,7 @@ use Term::ANSIColor;
|
||||
|
||||
use Archive::Extract;
|
||||
$Archive::Extract::PREFER_BIN = 1;
|
||||
use File::Slurp ();
|
||||
use HTTP::Tiny;
|
||||
use Digest::MD5;
|
||||
use Try::Tiny;
|
||||
@@ -182,13 +183,20 @@ sub deploy_db {
|
||||
sub deploy_oui {
|
||||
my $schema = schema('netdisco');
|
||||
$schema->storage->disconnect;
|
||||
|
||||
my $url = 'http://standards.ieee.org/develop/regauth/oui/oui.txt';
|
||||
my $resp = HTTP::Tiny->new->get($url);
|
||||
my @lines = ();
|
||||
my %data = ();
|
||||
|
||||
if ($resp->{success}) {
|
||||
foreach my $line (split /\n/, $resp->{content}) {
|
||||
if (@ARGV) {
|
||||
@lines = File::Slurp::read_file($ARGV[0], err_mode => 'quiet');
|
||||
}
|
||||
else {
|
||||
my $url = 'http://standards.ieee.org/develop/regauth/oui/oui.txt';
|
||||
my $resp = HTTP::Tiny->new->get($url);
|
||||
@lines = split /\n/, $resp->{content};
|
||||
}
|
||||
|
||||
if (scalar @lines) {
|
||||
foreach my $line (@lines) {
|
||||
if ($line =~ m/^\s*(.{2}-.{2}-.{2})\s+\(hex\)\s+(.*)\s*$/i) {
|
||||
my ($oui, $company) = ($1, $2);
|
||||
$oui =~ s/-/:/g;
|
||||
@@ -211,10 +219,15 @@ sub deploy_oui {
|
||||
]);
|
||||
});
|
||||
}
|
||||
|
||||
print color 'bold blue';
|
||||
say 'OUI update complete.';
|
||||
}
|
||||
else {
|
||||
print color 'bold red';
|
||||
say 'OUI update failed.';
|
||||
}
|
||||
|
||||
print color 'bold blue';
|
||||
say 'OUI update complete.';
|
||||
print color 'reset';
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user