#! /usr/bin/perl -w
use strict;
use Net::SNMP;
# use Data::Dumper;

# Ce script vérifie que tous les ports sont ouverts
# sur un switch de backup.

my $key = 'password';

sub usage()
{
	print "Usage: $0 switch\n";
	exit(3);
}

&usage if (scalar(@ARGV) != 1);

my $switch = shift;

# .1.3.6.1.2.1.2.2.1.7 =
# .iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifAdminStatus
my $oid = ".1.3.6.1.2.1.2.2.1.7";

my ($session, $error) =
	Net::SNMP->session(-hostname => $switch, -version => 1, -community => $key);

if (not defined($session)) {
	print "Impossible d'ouvrir une session SNMP avec $switch: $error !\n";
	exit(3); # UNKNOWN
}

my $result = $session->get_table(-baseoid => $oid);

# print Dumper($result);

if (not defined($result)) {
	print "Impossible de récupérer la table ifAdminStatus !\n";
	exit(3); # UNKNOWN
}

foreach my $index ( keys(%{$result}) ) {
	if (! ( $result->{$index} == 1 ) ) {
		print "WARNING : at least one port administratively down.\n";
		exit(1); # WARNING
	}
}
		
print "OK.\n";
exit(0); # OK


