#!/usr/bin/perl use Net::SNMP; my $host = "192.168.0.49"; my $community = "eX0gyN37"; my $input = "/home/cjones/snmpscripts/hostipaddresses.txt"; my $output = "/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 (ADDRESSES, $input) or die ("ERROR: Can't open input file"); open (OUTPUT, $output) or die ("ERROR: Can't open output file"); while (my $ip = ) { $ip =~ s/\n//; $ip =~ s/\r//; my ($snmp,$snmperror) = Net::SNMP->session( -hostname => $ip, -community => $community ); 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 "$host,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(ADDRESSES); close(OUTPUT); exit 0;