#!/usr/bin/perl -w use strict; use IO::Socket::Multicast; use Getopt::Long; # Sample usage: ./multicast.pl -g 239.255.255.255 -p 1234 -t 30 my ($group,$port,$timeout); $timeout = 10; GetOptions( "h" => sub { help() }, "help" => sub { help() }, "g=s" => \$group, "p=s" => \$port, "t=i" => \$timeout ); alarm($timeout); $SIG{ALRM} = sub { die_return_timeout(); }; #die_return(); }; sub die_return { print "0"; exit 1; } sub die_return_timeout { print "0"; exit -1; } my $sock; eval { while (!defined($sock)){ $sock = IO::Socket::Multicast->new(Proto=>'udp', LocalPort=>$port); } $sock->mcast_add($group) || die_return(); my $data; next unless $sock->recv($data,1); print "1"; exit 0; }; if ($@){ die_return_timeout(); } sub help { print "\nPandora FMS Plugin for Check Multicast\n\n"; print "Syntax: \n\n ./multicast.pl -g -p -t \n\n"; print "Sample usage: ./multicast.pl -g 239.255.255.255 -p 1234 -t 10 \n\n"; exit -1; }