J'utilise aussi Nagios pour monitorer mes serveurs / reseaux depuis plusieurs années. Si ca vous interesse, j'ai une checkcommand en perl qui envoie les alarmes à un client jabber.
#!/usr/bin/perl -w
use strict;
use Net::Jabber qw(Client) ;
use Net::Jabber qw(Message) ;
use Net::Jabber qw(Protocol) ;
use Net::Jabber qw(Presence) ;
use constant RECIPIENT => $ARGV[0];
use constant SERVER => 'jabber.org';
use constant PORT => 5222;
use constant USER => 'xxxxx';
use constant PASSWORD => 'xxxxx';
use constant RESOURCE => 'perl script';
use constant MAXWAIT => 10 ;
use vars qw/%presence/;
my %users;
my $connection = Net::Jabber::Client->new();
########################################
#
# Affiche la présence en ligne
#
########################################
sub handle_presence
{
my ($jid, $presence) = @_;
my $fromJID = $presence->GetFrom("jid");
my $uid = $fromJID->GetUserID();
if ($presence->GetType() eq "unavailable")
{
delete($users{$uid});
}
else
{
$users{$uid} = 1;
}
$presence{$jid} = $presence->GetShow() || 'normal';
}
my $len = scalar @ARGV;
my @field=split(/,/,$ARGV[0]);
[^] # Re: alertes par push Jabber
Posté par DOUCET Pierre . En réponse à la dépêche Sortie de Nagios 2.0. Évalué à 10.
J'utilise aussi Nagios pour monitorer mes serveurs / reseaux depuis plusieurs années. Si ca vous interesse, j'ai une checkcommand en perl qui envoie les alarmes à un client jabber.
#!/usr/bin/perl -w
use strict;
use Net::Jabber qw(Client) ;
use Net::Jabber qw(Message) ;
use Net::Jabber qw(Protocol) ;
use Net::Jabber qw(Presence) ;
use constant RECIPIENT => $ARGV[0];
use constant SERVER => 'jabber.org';
use constant PORT => 5222;
use constant USER => 'xxxxx';
use constant PASSWORD => 'xxxxx';
use constant RESOURCE => 'perl script';
use constant MAXWAIT => 10 ;
use vars qw/%presence/;
my %users;
my $connection = Net::Jabber::Client->new();
########################################
#
# Affiche la présence en ligne
#
########################################
sub handle_presence
{
my ($jid, $presence) = @_;
my $fromJID = $presence->GetFrom("jid");
my $uid = $fromJID->GetUserID();
if ($presence->GetType() eq "unavailable")
{
delete($users{$uid});
}
else
{
$users{$uid} = 1;
}
$presence{$jid} = $presence->GetShow() || 'normal';
}
my $len = scalar @ARGV;
my @field=split(/,/,$ARGV[0]);
if ($len ne 2)
{
die "Usage [jabberid] [message]\n";
}
$ENV{https_proxy}="http://xxxxxx:8080";
$ENV{http_proxy}="http://xxxxxx:8080";
$connection->SetCallBacks( "presence" => \&handle_presence );
$connection->Connect( "hostname" => SERVER,"port" => PORT,"connectiontype" => "http") or die "Cannot connect ($!)\n";
my @result = $connection->AuthSend( "username" => USER,"password" => PASSWORD,"resource" => RESOURCE );
$connection->PresenceSend();
if ($result[0] ne "ok")
{
die "Ident/Auth with server failed: $result[0] - $result[1]\n";
}
$connection->Process(2);
sleep(3);
foreach ( @field )
{
my($uid) = ($_ =~ m/(.*)\@.*/);
if(exists $users{$uid})
{
my $message = Net::Jabber::Message->new();
$ARGV[1]=~s/\\n/\n/g;
$message->SetMessage( "to" => $_, "type" => "chat", "body" => "$ARGV[1]");
$connection->Send($message);
sleep(MAXWAIT);
}
}
$connection->Disconnect();
exit;
Il s'utilise en donnant les jabberid séparés par des virgules ainsi que le message. C'est un peu brut, à vous de l'améliorer...