#!/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);