rendered paste body#!/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 = <ADDRESSES>) {
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;