Announcement

Collapse
No announcement yet.

Listing des mails en boite de reception

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Listing des mails en boite de reception

    Bonjour

    Je cherche​ à monitorer le nombre de mail dans une boite de réception IMAP.
    Pour ce faire, j'ai utilisé le script proposé par là qui marche très bien : http://www.unix.com/302337795-post1.html
    Mon soucis maintenant est de rajouter ce qu'il faut -en restant simple- pour rendre ceci propre dans Nagios/Centreon.
    A savoir lui donner les logins/mot de passe en paramètres, ainsi que les seuils critique et warning, et en retour la dite valeur, le statut et les perfsdata.
    Est ce qu'il y a des squelette "vides" de plugin disponibles quelque part? J'ai bien trouvé des exemples via les moteurs de recherche mais on part vite dans la complication pour pas "grand" chose.

    Merci d'avance,


  • #2
    J'ai réussit un peu via http://djibril.developpez.com/tutoriels/perl/ecrire-facilement-plugin-nagios-perl/

    Code:
    #!/usr/bin/perl
    # perl -MCPAN -e 'install Mail::IMAPClient'
    # perl -MCPAN -e 'install IO::Socket::SSL'
    # Permet d'afficher le nombre total de mail (lus et non lus) dans une boite de reception
    
    
    # gimap.pl by gxmsgx
    # description: get the count of unread messages on gmail imap
    
    #!/usr/bin/perl
    
    # gimap.pl by gxmsgx
    # description: get the count of unread messages on gmail imap
    
    use strict;
    use Mail::IMAPClient;
    use IO::Socket::SSL;
    use Getopt::Long;
    
    use Monitoring::Plugin;
    use vars qw/ $VERSION /;
    
    # Version du plugin
    $VERSION = '1.0';
     
    my $LICENCE
      = "Ce plugin Nagios est gratuit et libre de droits, et vous pouvez l'utiliser à votre convenance."
      . ' Il est livré avec ABSOLUMENT AUCUNE GARANTIE.';
     
    my $plugin_nagios = Monitoring::Plugin->new(
      shortname => 'Verification du nombre de mail dans une boite IMAP',
      usage     => 'Usage : %s [-l <login> ou --login <login>] [-p <password> ou --password <password>] [-w <warning>] [-c <critical>]',
      version   => $VERSION,
      license   => $LICENCE,
    );
     
    # Définition des arguments (avec 2 versions)
    $plugin_nagios->add_arg(
      spec     => 'login|l=s',
      help     => 'login to check',    # Aide au sujet de cette option
      required => 1,                  # Argument obligatoire
    );
    $plugin_nagios->add_arg(
      spec     => 'password|p=s',
      help     => 'password to check',    # Aide au sujet de cette option
      required => 1,                  # Argument obligatoire
    );
    $plugin_nagios->add_arg(
      spec     => 'warning|w=s',
      help     => 'nombre de mail minimum avant warning',    # Aide au sujet de cette option
      required => 1,                  # Argument obligatoire
    );
    $plugin_nagios->add_arg(
      spec     => 'critical|c=s',
      help     => 'nombre de mail minimum avant critical',    # Aide au sujet de cette option
      required => 1,                  # Argument obligatoire
    );
    
    
    # Activer le parsing des options de ligne de commande
    $plugin_nagios->getopts;
    
    my $username = $plugin_nagios->opts->login; # [email protected]
    my $password = $plugin_nagios->opts->password;
    my $msgct = "-1";
    
    my $socket = IO::Socket::SSL->new(
       PeerAddr => 'outlook.office365.com',
       PeerPort => 993,
       Timeout => 10,
      )
      or die "socket(): [email protected]";
    
    my $client = Mail::IMAPClient->new(
       Socket   => $socket,
       User     => $username,
       Password => $password,
      )
      or die "new(): [email protected]";
    
    if ($client->IsAuthenticated()) {
    
        $client->select("INBOX");
        $msgct = $client->message_count||'0';
        #print "$msgct\n";
    }
    
    $client->logout();
    
    if (($msgct >= 0)&&($msgct < $plugin_nagios->opts->warning)) {
     print "OK - $msgct mail(s) en attente | $msgct \n"; exit(0);
    }
    elsif (($msgct >= $plugin_nagios->opts->warning)&&($msgct < $plugin_nagios->opts->critical)) {
     print "WARNING - $msgct mail(s) en attente | $msgct \n"; exit(1);     
    }
    elsif ($msgct >= $plugin_nagios->opts->critical) {
     print "CRITICAL - $msgct mail(s) en attente | $msgct \n"; exit(2);
    }
    elsif ($msgct == -1) {
     print "UNKNOWN - $msgct mail(s) en attente | $msgct \n"; exit(3);
    }
    else
    {
     print "UNKNOWN - $msgct mail(s) en attente | $msgct \n"; exit(3);
    }

    Comment

    Working...
    X