GetOptions( "verbose" => \$verbose );
my $timeout = 15;
+my $username = $ENV{telnet_user};
+my $password = $ENV{telnet_password};
+
+die "Must define username (in ENV - ie 'env.telnet_user wibble')\n"
+ unless( $username );
+die "Must define password (in ENV - ie 'env.telnet_password wibble')\n"
+ unless( $username );
+
+# Hold individual MAC addresses:
+my %mactypes = (
+ unknown => {
+ addresses => [],
+ count => 0,
+ },
+);
+
+foreach my $type ( grep { /^macs_.+/ } keys( %ENV ) ){
+ my ( $name ) = $type =~ m{^macs_(.+)$};
+ my @values = split( / /, uc( $ENV{$type} ) );
+ $mactypes{$name}->{addresses} = \@values;
+ $mactypes{$name}->{count} = 0;
+}
+
if (defined $ARGV[0] and $ARGV[0] eq 'snmpconf') {
exit 0;
}
devices.draw LINE2
devices.info Number of devices
EOC
+ foreach my $type ( keys( %mactypes ) ){
+ print "devices_${type}.label Total devices for ${type}\n";
+ print "devices_${type}.draw LINE2\n";
+ print "devices_${type}.info Number of devices for ${type}\n";
+ }
exit 0;
}
}
$t->open( $host );
$t->waitfor('/Username :/');
-$t->print("SuperUser");
+$t->print( $username );
$t->waitfor('/Password :/');
-$t->print( "O2Br0ad64nd" );
+$t->print( $password );
$t->waitfor( '/{SuperUser}=>/' );
$t->print( 'hostmgr list' );
$t->close();
my $activecount = 0;
+my @activemacs;
foreach my $line ( split( m{\n}s, $rtn ) ){
my( $mac, $ip, $flags ) = $line =~ m{^($macre)\s+(-|$ipre)\s+(\w+)\s+};
if( $flags =~ m{C} ){
$activecount++;
+ push @activemacs, uc( $mac );
# print "Active host: $ip $mac\n";
}
}
print "devices.value $activecount\n";
+my @allocatedmacs;
+foreach my $type ( keys( %mactypes ) ){
+ my $activecount;
+ foreach my $mac ( @activemacs ){
+ if( grep( /$mac/, @{$mactypes{$type}->{addresses}} ) ){
+ $mactypes{$type}->{count}++;
+ push @allocatedmacs, $mac;
+ }
+ }
+}
+$mactypes{unknown}->{count} = ( $#activemacs - $#allocatedmacs );
+
+foreach my $type ( keys( %mactypes ) ){
+ print "devices_${type}.value " . $mactypes{$type}->{count} . "\n";
+}