All pastes #980165 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-04-10 20:36 UTC
rendered paste body
#!/usr/bin/perl

use Net::SNMP;
use strict;
use warnings;

my $community           = "public";
my $inputfilename       = "ips";
my $outputfilename      = "blah.sv";

my $IFTYPE              = "1.3.6.1.2.1.2.2.1.3";
my $IFNAME              = "1.3.6.1.2.1.31.1.1.1.1";
my $IFALIAS             = "1.3.6.1.2.1.31.1.1.1.18";
my $IFOPERSTATUS        = "1.3.6.1.2.1.2.2.1.8";
my $VMVLAN              = "1.3.6.1.4.1.9.9.68.1.2.2.1.2";
my $HOSTNAME_OID        = "1.3.6.1.4.1.9.2.1.3.0";
my $IFNUMBER            = "1.3.6.1.2.1.2.1.0";

open my $input, '<', $inputfilename or die "$0: $inputfilename: $!\n";
open my $output, '>', $outputfilename or die "$0: $outputfilename: $!\n";

my $ip = '128.128.2.10';

for my $ip  (<$input>) {

    chomp $ip;

    print "$ip: ";
    my ($snmp,$snmperror)   = Net::SNMP->session(
                -hostname       => $ip,
                -community      => $community
            ) or do { print "FAILED TO CONNECT\n"; next; };

    my $response        = $snmp->get_request(
        $IFNUMBER,
        $HOSTNAME_OID
        ) or do { print "FAILED TO GET REQUEST\n"; next; };

    my $numInterfaces   = $response->{"$IFNUMBER"};
    my $hostname        = $response->{"$HOSTNAME_OID"};

    die "numInterfaces isnt being defined for some reason\n" unless defined $numInterfaces;

    if ($hostname) { print $output "$ip,$hostname,,,\n"; } else { print "ERROR\n"; next; }

    print "$hostname: \n";
    print "$numInterfaces interfaces.\n";
    for (my $i=1; $i <= $numInterfaces; $i++) {

            my $response = $snmp->get_request(
                    "$IFTYPE.$i",
                    "$IFNAME.$i",
                    "$IFALIAS.$i",
                    "$IFOPERSTATUS.$i",
                    "$VMVLAN.$i"
                );

            my $ifType        = $response->{"$IFTYPE.$i"};
            my $ifName        = $response->{"$IFNAME.$i"};
            my $ifAlias       = $response->{"$IFALIAS.$i"};
            my $ifOperStatus  = $response->{"$IFOPERSTATUS.$i"};
            my $vmVlan        = $response->{"$VMVLAN.$i"};

       print "$ifType, $ifName, $ifAlias, $ifOperStatus, $vmVlan\n" unless not defined $ifType;

        }
    print "\n\n";


    }

close($inputfilename);
close($outputfilename);