From 6c1cc1686186f6d22c54821e7ecbc8aa03c920e0 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Tue, 12 Mar 2019 14:48:10 +0000 Subject: [PATCH] various fixes and now tested --- lib/App/Netdisco/Transport/CLI.pm | 8 ++++++-- lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/App/Netdisco/Transport/CLI.pm b/lib/App/Netdisco/Transport/CLI.pm index d834856a..6f865c7b 100644 --- a/lib/App/Netdisco/Transport/CLI.pm +++ b/lib/App/Netdisco/Transport/CLI.pm @@ -4,6 +4,8 @@ use Dancer qw/:syntax :script/; use App::Netdisco::Util::Device 'get_device'; use Module::Load (); +use Net::OpenSSH; +use Try::Tiny; use base 'Dancer::Object::Singleton'; @@ -43,11 +45,12 @@ Returns C if the connection fails. has 'ssh' => ( is => 'rw' ); has 'auth' => ( is => 'rw' ); + has 'host' => ( is => 'rw' ); has 'platform' => ( is => 'rw' ); sub arpnip { my $self = shift; - $self->platform->arpnip(@_, $self->ssh, $self->auth); + $self->platform->arpnip(@_, $self->host, $self->ssh, $self->auth); } } @@ -71,7 +74,7 @@ sub session_for { push(@master_opts, @{$auth->{ssh_master_opts}}) if $auth->{ssh_master_opts}; - $Net::OpenSSH::debug = ~0 if setting('log') eq 'debug'; + $Net::OpenSSH::debug = $ENV{SSH_TRACE}; my $ssh = Net::OpenSSH->new( $device->ip, user => $auth->{username}, @@ -102,6 +105,7 @@ sub session_for { my $sess = MySession->new( ssh => $ssh, auth => $auth, + host => $device->ip, platform => $platform->new(), ); diff --git a/lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm b/lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm index e0adf4ad..3ac3c307 100644 --- a/lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm +++ b/lib/App/Netdisco/Worker/Plugin/Arpnip/Nodes.pm @@ -71,7 +71,7 @@ register_worker({ phase => 'main', driver => 'cli' }, sub { or return Status->defer("arpnip failed: could not SSH connect to $device"); # should be both v4 and v6 - my $arps = get_arps_cli($device, $cli->arpnip); + my $arps = get_arps_cli($device, [$cli->arpnip]); # update node_ip with ARP and Neighbor Cache entries my $now = 'to_timestamp('. (join '.', gettimeofday) .')'; @@ -89,7 +89,7 @@ sub get_arps_cli { $entries ||= []; foreach my $entry (@$entries) { - next unless check_mac( $entry->{mac} ); + next unless check_mac($entry->{mac}, $device); push @arps, { node => $entry->{mac}, ip => $entry->{ip},