#!/usr/bin/perl use Net::SNMP; use strict; use warnings; my $community = "eX0gyN37"; my $inputfilename = "/home/cjones/snmpscripts/hostipaddresses.txt"; my $outputfilename = "/home/cjones/snmpscripts/vlan1.csv"; my $IFINDEX = "1.3.6.1.2.1.2.2.1.1"; 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"; while (my $ip = <$input>) { $ip =~ s/\n//; $ip =~ s/\r//; my ($snmp,$snmperror) = Net::SNMP->session( -hostname => $ip, -community => $community ) or die "ERROR: $!"; my $response = $snmp->get_request( $IFNUMBER, $HOSTNAME_OID ); my $getNumInterfaces = $response->{"$IFNUMBER"}; my $hostname = $response->{"$HOSTNAME_OID"}; print "$ip - $hostname: "; print $output "\n$hostname,$ip,,,\n"; print $output "$ip,Interface,Description,Status,Vlan\n"; for (my $i=1; $i <= $getNumInterfaces; $i++) { $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"}; if ($ifOperStatus == 1) { $ifOperStatus = "connected" } else { $ifOperStatus = "notconnect" }; my $vmVlan = $response->{"$VMVLAN.$i"}; if (($ifType == 6) && ($vmVlan == 1)) { print $output ",$ifName,$ifAlias,$ifOperStatus,$vmVlan\n"; } } print "OK\n"; } close($inputfilename); close($outputfilename); exit 0;