#298 NXOS SSHCollector and note in docs about VRFs

This commit is contained in:
Oliver Gorwits
2017-04-19 21:48:45 +01:00
parent d1a7761fda
commit 608d1b86b2
3 changed files with 70 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
[ENHANCEMENTS]
* #302 Device searching now searches on module serial numbers
* #298 NXOS SSHCollector and note in docs about VRFs
2.034003 - 2017-04-14

View File

@@ -12,6 +12,14 @@ The LLDP configuration should look like:
interface all;
}
=head1 VRFs and NXOS
Netdsico at this time does not support VRFs. In particular, overlapping IP
address spaces will not be shown in the interface.
However if you're running Cisco NXOS and do not have overlapping IP address
space, then you can use the NXOS SSHCollector profile for that platform.
=head1 Report Cisco 37xx as Single Device Instead of Stacked
Add this to your 37xx config:

View File

@@ -0,0 +1,61 @@
package App::Netdisco::SSHCollector::Platform::NXOS;
# vim: set expandtab tabstop=8 softtabstop=4 shiftwidth=4:
=head1 NAME
App::Netdisco::SSHCollector::Platform::NXOS
=head1 DESCRIPTION
Collect ARP entries from Cisco NXOS devices.
=cut
use strict;
use warnings;
use Dancer ':script';
use Moo;
=head1 PUBLIC METHODS
=over 4
=item B<arpnip($host, $ssh)>
Retrieve ARP entries from device. C<$host> is the hostname or IP address
of the device. C<$ssh> is a Net::OpenSSH connection to the device.
Returns a list of hashrefs in the format C<< { mac => MACADDR, ip => IPADDR } >>.
=cut
sub arpnip {
my ($self, $hostlabel, $ssh, $args) = @_;
debug "$hostlabel $$ arpnip()";
my @data = $ssh->capture("show ip arp vrf all");
chomp @data;
my @arpentries;
#IP ARP Table for all contexts
#Total number of entries: 5
#Address Age MAC Address Interface
#192.168.228.1 00:00:43 0000.abcd.1111 mgmt0
#192.168.228.9 00:05:24 cccc.7777.1b1b mgmt0
foreach (@data) {
my ($ip, $age, $mac, $iface) = split(/\s+/);
if ($ip && $ip =~ m/(\d{1,3}\.){3}\d{1,3}/
&& $mac =~ m/([0-9a-f]{4}\.){2}[0-9a-f]{4}/i) {
push(@arpentries, { ip => $ip, mac => $mac });
}
}
return @arpentries;
}
1;