diff --git a/apps/asterisk/mode/components.pm b/apps/asterisk/mode/components.pm deleted file mode 100644 index b05562fde..000000000 --- a/apps/asterisk/mode/components.pm +++ /dev/null @@ -1,190 +0,0 @@ -################################################################################ -# Copyright 2005-2014 MERETHIS -# Centreon is developped by : Julien Mathis and Romain Le Merlus under -# GPL Licence 2.0. -# -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free Software -# Foundation ; either version 2 of the License. -# -# This program is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, see . -# -# Linking this program statically or dynamically with other modules is making a -# combined work based on this program. Thus, the terms and conditions of the GNU -# General Public License cover the whole combination. -# -# As a special exception, the copyright holders of this program give MERETHIS -# permission to link this program with independent modules to produce an executable, -# regardless of the license terms of these independent modules, and to copy and -# distribute the resulting executable under terms of MERETHIS choice, provided that -# MERETHIS also meet, for each linked independent module, the terms and conditions -# of the license of that module. An independent module is a module which is not -# derived from this program. If you modify this program, you may extend this -# exception to your version of the program, but you are not obliged to do so. If you -# do not wish to do so, delete this exception statement from your version. -# -# For more information : contact@centreon.com -# Authors : Quentin Garnier -# -#################################################################################### - -package apps::asterix::mode::components; - -use base qw(centreon::plugins::mode); - -use strict; -use warnings; -use centreon::plugins::statefile; - -my $oid_AsteriskBase = '.1.3.6.1.4.1.22736'; -my $oid_AsteriskConfigCallsActive = $oid_AsteriskBase.'.1.2.5.0'; -my $oid_AsteriskConfigCallsProcessed = $oid_AsteriskBase.'.1.2.6.0'; -my $oid_AsteriskAstIndCountry = $oid_AsteriskBase.'.1.4.3.1.2.1'; - -sub new { - my ($class, %options) = @_; - my $self = $class->SUPER::new(package => __PACKAGE__, %options); - bless $self, $class; - - $self->{version} = '1.0'; - $options{options}->add_options(arguments => - { - "warning:s" => { name => 'warning', }, - "critical:s" => { name => 'critical', }, - }); - $self->{statefile_value} = centreon::plugins::statefile->new(%options); - return $self; -} - -sub check_options { - my ($self, %options) = @_; - $self->SUPER::init(%options); - - if (($self->{perfdata}->threshold_validate(label => 'warning', value => $self->{option_results}->{warning})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong warning threshold '" . $self->{option_results}->{warning} . "'."); - $self->{output}->option_exit(); - } - if (($self->{perfdata}->threshold_validate(label => 'critical', value => $self->{option_results}->{critical})) == 0) { - $self->{output}->add_option_msg(short_msg => "Wrong critical threshold '" . $self->{option_results}->{critical} . "'."); - $self->{output}->option_exit(); - } - - $self->{statefile_value}->check_options(%options); -} - -sub run { - my ($self, %options) = @_; - - $self->{statefile_value}->read(statefile => 'asterisk_' . $self->{option_results}->{hostname} . '_' . centreon::plugins::influxdbapi::get_port($self) . '_' . $self->{mode}); - my $old_timestamp = $self->{statefile_value}->get(name => 'last_timestamp'); - - my $new_datas = {}; - $new_datas->{last_timestamp} = time(); - $self->{statefile_value}->write(data => $new_datas); - - if (!defined($old_timestamp)) { - $self->{output}->output_add(severity => 'OK', - short_msg => "Buffer creation..."); - $self->{output}->display(); - $self->{output}->exit(); - } - - $self->{option_results}->{query} = 'select sum("success") as "success_sum", sum("failure") as "failure_sum" from lmtpd.deliveries where time > '.$old_timestamp.'s and time < now()'; - - my $webcontent = centreon::plugins::influxdbapi::connect($self); - - - my $hwebcontent; - for my $ref (@{ $webcontent }) { - my $name = $ref->{name}; - my @columns = @{ $ref->{columns} }; - - for my $points (@{ $ref->{points} }) { - my %hash; - @hash{ @columns } = @$points; - push @{ $hwebcontent->{$name} }, \%hash; - } - } - - my $success_incoming_mails = $hwebcontent->{qw(lmtpd.deliveries)}->[0]->{success_sum} // '0'; - my $failure_incoming_mails = $hwebcontent->{qw(lmtpd.deliveries)}->[0]->{failure_sum} // '0'; - - # If not present: failure and success incoming mails are 0 - if (!defined($success_incoming_mails)) { - $success_incoming_mails = 0; - } - - if (!defined($failure_incoming_mails)) { - $failure_incoming_mails = 0; - } - - my $exit = $self->{perfdata}->threshold_check(value => $failure_incoming_mails, threshold => [ { label => 'critical', 'exit_litteral' => 'critical' }, { label => 'warning', exit_litteral => 'warning' } ]); - - $self->{output}->output_add(severity => $exit, - short_msg => sprintf("Success Incoming Mails: %d - Failure Incoming Mails: %d",$success_incoming_mails,$failure_incoming_mails)); - $self->{output}->perfdata_add(label => 'success', - value => sprintf("%d", $success_incoming_mails), - min => 0, - ); - $self->{output}->perfdata_add(label => 'failure', - value => sprintf("%d", $failure_incoming_mails), - warning => $self->{perfdata}->get_perfdata_for_output(label => 'warning'), - critical => $self->{perfdata}->get_perfdata_for_output(label => 'critical'), - min => 0, - ); - - $self->{output}->display(); - $self->{output}->exit(); - -} - -1; - -__END__ - -=head1 MODE - -Check Bluemind incoming_mails (success and failure) - -=over 8 - -=item B<--hostname> - -IP Addr/FQDN of the Bluemind host - -=item B<--port> - -Port used by InfluxDB API - -=item B<--database> - -InfluxDB Database name - -=item B<--username> - -Specify username for API authentification - -=item B<--password> - -Specify password for API authentification - -=item B<--timeout> - -Threshold for HTTP timeout - -=item B<--warning> - -Warning Threshold for failure incoming mails - -=item B<--critical> - -Critical Threshold for failure incoming mails - -=back - -=cut diff --git a/apps/asterisk/mode/getdata.pm b/apps/asterisk/mode/getdata.pm deleted file mode 100644 index 5af26fe2d..000000000 --- a/apps/asterisk/mode/getdata.pm +++ /dev/null @@ -1,207 +0,0 @@ -################################################################################ -# Copyright 2005-2014 MERETHIS -# Centreon is developped by : Julien Mathis and Romain Le Merlus under -# GPL Licence 2.0. -# -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free Software -# Foundation ; either version 2 of the License. -# -# This program is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, see . -# -# Linking this program statically or dynamically with other modules is making a -# combined work based on this program. Thus, the terms and conditions of the GNU -# General Public License cover the whole combination. -# -# As a special exception, the copyright holders of this program give MERETHIS -# permission to link this program with independent modules to produce an executable, -# regardless of the license terms of these independent modules, and to copy and -# distribute the resulting executable under terms of MERETHIS choice, provided that -# MERETHIS also meet, for each linked independent module, the terms and conditions -# of the license of that module. An independent module is a module which is not -# derived from this program. If you modify this program, you may extend this -# exception to your version of the program, but you are not obliged to do so. If you -# do not wish to do so, delete this exception statement from your version. -# -# For more information : contact@centreon.com -# Authors : Quentin Garnier -# -#################################################################################### - -package apps::asterisk::mode::getdata; - -use base qw(centreon::plugins::mode); - -use strict; -use warnings; -use centreon::plugins::misc; - -sub new { - my ($class, %options) = @_; - my $self = $class->SUPER::new(package => __PACKAGE__, %options); - bless $self, $class; - - $self->{version} = '1.0'; - $options{options}->add_options(arguments => - { - "hostname:s" => { name => 'hostname' }, - "remote" => { name => 'remote' }, - "ssh-option:s@" => { name => 'ssh_option' }, - "ssh-path:s" => { name => 'ssh_path' }, - "ssh-command:s" => { name => 'ssh_command', default => 'ssh' }, - "timeout:s" => { name => 'timeout', default => 30 }, - "sudo" => { name => 'sudo' }, - "command:s" => { name => 'command' }, - "command-path:s" => { name => 'command_path' }, - "command-options:s" => { name => 'command_options' }, - "trunkname:s" => { name => 'trunkname' }, - "filter-name:s" => { name => 'filter_name', }, - }); - $self->{result} = {}; - return $self; -} - -sub check_options { - my ($self, %options) = @_; - $self->SUPER::init(%options); -} - -sub manage_selection { - my ($self, %options) = @_; - - my $stdout = centreon::plugins::misc::execute(output => $self->{output}, - options => $self->{option_results}, - sudo => $self->{option_results}->{sudo}, - command => $self->{option_results}->{command}, - command_path => $self->{option_results}->{command_path}, - command_options => $self->{option_results}->{command_options}, - trunkname => $self->{option_results}->{trunkname}); - my @lines = split /\n/, $stdout; - # Header not needed - #shift @lines; - foreach my $line (@lines) { - next if ($line !~ /^(.*): (.*) \((.*)\)/); - my ($trunkname, $trunkstatus, $trunkvalue) = ($1, $2, $3); - - if (defined($self->{option_results}->{filter_name}) && $self->{option_results}->{filter_name} ne '' && - $trunkname !~ /$self->{option_results}->{filter_name}/) { - $self->{output}->output_add(long_msg => "Skipping trunk '" . $trunkname . "': no matching filter name"); - next; - } - ##### - # test - ##### - if ($trunkname eq '009900524') - { - $self->{result}->{$trunkname} = {name => $trunkname, status => $trunkstatus, value => $trunkvalue}; - } - else - { - $self->{result}->{$trunkname} = {name => $trunkname, status => 'Unknown', value => $trunkvalue}; - } - } -} - -sub run { - my ($self, %options) = @_; - my $msg; - $self->{output}->output_add(severity => 'OK', - short_msg => 'Everything is OK'); - $self->manage_selection(); - - foreach my $name (sort(keys %{$self->{result}})) { - $msg = sprintf("Trunk: %s %s", $self->{result}->{$name}->{name}, $self->{result}->{$name}->{status}); - $self->{output}->perfdata_add(label => $self->{result}->{$name}->{name}, - value => $self->{result}->{$name}->{value}, - #warning => $self->{perfdata}->get_perfdata_for_output(label => 'warn1'), - #critical => $self->{perfdata}->get_perfdata_for_output(label => 'crit1'), - min => 0); - if (!$self->{output}->is_status(value => $self->{result}->{$name}->{status}, compare => 'ok', litteral => 1)) { - $self->{output}->output_add(severity => $self->{result}->{$name}->{status}, - short_msg => $msg); - } - } - - $self->{output}->display(); - $self->{output}->exit(); -} - -sub disco_format { - my ($self, %options) = @_; - - $self->{output}->add_disco_format(elements => ['name']); -} - -sub disco_show { - my ($self, %options) = @_; - - $self->manage_selection(); - foreach my $name (sort(keys %{$self->{result}})) { - $self->{output}->add_disco_entry(name => $name, - ); - } -} - -1; - -__END__ - -=head1 MODE - -List partitions. - -=over 8 - -=item B<--remote> - -Execute command remotely in 'ssh'. - -=item B<--hostname> - -Hostname to query (need --remote). - -=item B<--ssh-option> - -Specify multiple options like the user (example: --ssh-option='-l=centreon-engine' --ssh-option='-p=52'). - -=item B<--ssh-path> - -Specify ssh command path (default: none) - -=item B<--ssh-command> - -Specify ssh command (default: 'ssh'). Useful to use 'plink'. - -=item B<--timeout> - -Timeout in seconds for the command (Default: 30). - -=item B<--sudo> - -Use 'sudo' to execute the command. - -=item B<--command> - -Command to get information (Default: 'cat'). -Can be changed if you have output in a file. - -=item B<--command-path> - -Command path (Default: none). - -=item B<--command-options> - -Command options (Default: '/proc/partitions 2>&1'). - -=item B<--filter-name> - -Filter partition name (regexp can be used). - -=back - -=cut \ No newline at end of file diff --git a/apps/asterisk/plugin.pm b/apps/asterisk/plugin.pm deleted file mode 100644 index 9a030a572..000000000 --- a/apps/asterisk/plugin.pm +++ /dev/null @@ -1,67 +0,0 @@ -################################################################################ -# Copyright 2005-2014 MERETHIS -# Centreon is developped by : Julien Mathis and Romain Le Merlus under -# GPL Licence 2.0. -# -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free Software -# Foundation ; either version 2 of the License. -# -# This program is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, see . -# -# Linking this program statically or dynamically with other modules is making a -# combined work based on this program. Thus, the terms and conditions of the GNU -# General Public License cover the whole combination. -# -# As a special exception, the copyright holders of this program give MERETHIS -# permission to link this program with independent modules to produce an executable, -# regardless of the license terms of these independent modules, and to copy and -# distribute the resulting executable under terms of MERETHIS choice, provided that -# MERETHIS also meet, for each linked independent module, the terms and conditions -# of the license of that module. An independent module is a module which is not -# derived from this program. If you modify this program, you may extend this -# exception to your version of the program, but you are not obliged to do so. If you -# do not wish to do so, delete this exception statement from your version. -# -# For more information : contact@centreon.com -# Authors : Mathieu Cinquin -# -#################################################################################### - -package apps::asterisk::plugin; - -use strict; -use warnings; -use base qw(centreon::plugins::script_simple); -#use base qw(centreon::plugins::script_snmp); - -sub new { - my ($class, %options) = @_; - - my $self = $class->SUPER::new(package => __PACKAGE__, %options); - bless $self, $class; - # $options->{options} = options object - - $self->{version} = '0.1'; - %{$self->{modes}} = ( - 'getdata' => 'apps::asterisk::mode::getdata', - ); - - return $self; -} - - -1; - -__END__ - -=head1 PLUGIN DESCRIPTION - -Check BlueMind through InfluxDB API - -=cut diff --git a/apps/asterisk/scripts/asterisk_sipshowpeer.pm b/apps/asterisk/scripts/asterisk_sipshowpeer.pm deleted file mode 100644 index f5c3d5aac..000000000 --- a/apps/asterisk/scripts/asterisk_sipshowpeer.pm +++ /dev/null @@ -1,139 +0,0 @@ -#!/usr/bin/perl -w -# -# Copyright (C) 2005 Rodolphe Quiedeville -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; version 2 dated June, -# 1991. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# If you improve this script please send your version to my email address -# with the copyright notice upgrade with your name. -# -# -# $Log$ -# Revision 1.1 2005/10/22 21:04:01 rodo -# Created by Rodolphe Quiedeville -# -# Revision 1.2 2010/11/04 10:11 Guillaume Bour -# Allow channels monitoring per device (IAX/SIP/... account or trunk). -# To monitor a particular device, link asterisk_sipshowpeer_tech_identifier to this file, where: -# - tech is one of SIP, IAX, DAHDI, ... -# - identifier is account name (102, foo, ...) -# -# i.e: -# ls -s /path/to/asterisk_sipshowpeer /etc/munin/plugins/asterisk_sipshowpeer_trunk1 -# will monitor SIP/trunk1 device -# -# -# Parameters mandatory: -# -# username -# secret -# -#%# family=asterisk -#%# capabilities=autoconf - -use strict; - -my $ret = undef; -if (! eval "require Net::Telnet;") -{ - $ret = "Net::Telnet not found"; -} - -my $DEVICE=`basename $0`; -if ($DEVICE =~ /^asterisk_sipshowpeer_(.*)$/) -{ $DEVICE = "$1"; } -elsif (defined($ARGV[0])) -{ ($DEVICE) = @ARGV; } -else -{ $DEVICE = ''; } - -my $command = 'sip show peers'; - -my $host = exists $ENV{'host'} ? $ENV{'host'} : "127.0.0.1"; -my $port = exists $ENV{'port'} ? $ENV{'port'} : "5038"; - -#[asterisk_*] -#env.username xivo_munin_user -#env.secret jeSwupAd0 - -#my $username = $ENV{'username'}; -my $username = 'xivo_munin_user'; -#my $secret = $ENV{'secret'}; -my $secret = 'jeSwupAd0'; - -my $pop = new Net::Telnet (Telnetmode => 0); -$pop->open(Host => $host, - Port => $port); - -## Read connection message. -my $line = $pop->getline; -die $line unless $line =~ /^Asterisk/; - -## Send user name. -$pop->print("Action: login"); -$pop->print("Username: $username"); -$pop->print("Secret: $secret"); -$pop->print("Events: off"); -$pop->print(""); - -#Response: Success -#Message: Authentication accepted - -## Request status of messages. -$pop->print("Action: command"); -$pop->print("Command: ".$command); -$pop->print(""); -my @result = ('Nothing Monitored'); -my $nb = 0; -while (($line = $pop->getline) and ($line !~ /END COMMAND/o)) -{ -# print $line; - if ($DEVICE eq '') - { - $result[$nb] = $line if $line !~ /^Name|Unmonitored/; - } - else - { - $result[$nb] = $line if $line =~ /^$DEVICE/; - } - $nb++; -} -$pop->print("Action: logoff"); -$pop->print(""); -while (($line = $pop->getline) and ($line !~ /END COMMAND/o)) -{} -$pop->close(); - -my $peername; -my $status; -my $splitresult; - -foreach (@result) -{ - if ((defined($_)) && ($_ =~ /^.*\/.* /)) - { - chomp($_); - $peername = $status = $_; - $peername =~ /^(\w*)\/\w* .* (OK|Unreachable) (\(.*\))/; - $splitresult = $1.": ".$2; - if (defined($3)) - { - $splitresult = $splitresult." ".$3; - } - print $splitresult."\n"; - } -} - -# vim:syntax=perl