From e0ec5d2e8560ae433ee677622b24ba82dbe7630b Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 29 May 2011 15:47:21 +0200 Subject: lowered filesystem hierarchy--everything are modules --- modules/Monitoring/Makefile | 8 - modules/Monitoring/TODO | 5 - modules/Monitoring/conf/hostgroups_nagios2.cfg | 31 --- modules/Monitoring/conf/krebs_hosts.cfg | 78 ------- modules/Monitoring/conf/krebsnet.cfg | 20 -- modules/Monitoring/conf/localhost.cfg | 60 ----- modules/Monitoring/conf/other_hosts.cfg | 23 -- modules/Monitoring/conf/shack_infrastructure.cfg | 231 ------------------- modules/Monitoring/conf/shacknet.cfg | 34 --- modules/Monitoring/conf/tinc_hosts.cfg | 45 ---- modules/Monitoring/conf/tincnet.cfg | 31 --- .../htdocs/images/logos/krebs/favicon.ico | Bin 822 -> 0 bytes .../Monitoring/htdocs/images/logos/krebs/krebs.gd2 | Bin 1047 -> 0 bytes .../Monitoring/htdocs/images/logos/krebs/krebs.png | Bin 323 -> 0 bytes .../Monitoring/htdocs/images/logos/krebs/shack.gd2 | Bin 1047 -> 0 bytes .../Monitoring/htdocs/images/logos/krebs/shack.png | Bin 316 -> 0 bytes .../Monitoring/htdocs/images/logos/krebs/tinc.gd2 | Bin 1305 -> 0 bytes .../Monitoring/htdocs/images/logos/krebs/tinc.png | Bin 361 -> 0 bytes .../images/logos/krebs/wireless_access_point.gd2 | Bin 1047 -> 0 bytes .../images/logos/krebs/wireless_access_point.png | Bin 883 -> 0 bytes .../logos/krebs/wireless_access_point_64.png | Bin 5364 -> 0 bytes modules/Monitoring/plugins/check_sip | 252 --------------------- 22 files changed, 818 deletions(-) delete mode 100644 modules/Monitoring/Makefile delete mode 100644 modules/Monitoring/TODO delete mode 100644 modules/Monitoring/conf/hostgroups_nagios2.cfg delete mode 100644 modules/Monitoring/conf/krebs_hosts.cfg delete mode 100644 modules/Monitoring/conf/krebsnet.cfg delete mode 100644 modules/Monitoring/conf/localhost.cfg delete mode 100644 modules/Monitoring/conf/other_hosts.cfg delete mode 100644 modules/Monitoring/conf/shack_infrastructure.cfg delete mode 100644 modules/Monitoring/conf/shacknet.cfg delete mode 100644 modules/Monitoring/conf/tinc_hosts.cfg delete mode 100644 modules/Monitoring/conf/tincnet.cfg delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/favicon.ico delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/krebs.gd2 delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/krebs.png delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/shack.gd2 delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/shack.png delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/tinc.gd2 delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/tinc.png delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point.gd2 delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point.png delete mode 100644 modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point_64.png delete mode 100755 modules/Monitoring/plugins/check_sip (limited to 'modules/Monitoring') diff --git a/modules/Monitoring/Makefile b/modules/Monitoring/Makefile deleted file mode 100644 index cc1d8903..00000000 --- a/modules/Monitoring/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -.phony: debian -debian: - [ `which nagios3` ] || apt-get install nagios3 - rm /etc/nagios3/conf.d/localhost_nagios2.cfg || true - cp -r conf/* /etc/nagios3/conf.d/ - cp -R htdocs/* /usr/share/nagios3/htdocs/ - cp -r plugins /usr/lib/nagios - /etc/init.d/nagios3 reload diff --git a/modules/Monitoring/TODO b/modules/Monitoring/TODO deleted file mode 100644 index 6d74fdcd..00000000 --- a/modules/Monitoring/TODO +++ /dev/null @@ -1,5 +0,0 @@ -add guest user -add guest user to -> * authorized_for_all_services=usernagios,guest -> * authorized_for_all_hosts=usernagios,guest -in /etc/nagios3/somewhere diff --git a/modules/Monitoring/conf/hostgroups_nagios2.cfg b/modules/Monitoring/conf/hostgroups_nagios2.cfg deleted file mode 100644 index 63acbf50..00000000 --- a/modules/Monitoring/conf/hostgroups_nagios2.cfg +++ /dev/null @@ -1,31 +0,0 @@ -# Some generic hostgroup definitions - -# A simple wildcard hostgroup -define hostgroup { - hostgroup_name all - alias All Servers - members * - } - -# A list of your Debian GNU/Linux servers -define hostgroup { - hostgroup_name debian-servers - alias Debian GNU/Linux Servers - members localhost - } - -# A list of your web servers -define hostgroup { - hostgroup_name http-servers - alias HTTP servers - members localhost - } - -# A list of your ssh-accessible servers -define hostgroup { - hostgroup_name ssh-servers - alias SSH servers - members localhost - } - - diff --git a/modules/Monitoring/conf/krebs_hosts.cfg b/modules/Monitoring/conf/krebs_hosts.cfg deleted file mode 100644 index a929fa19..00000000 --- a/modules/Monitoring/conf/krebs_hosts.cfg +++ /dev/null @@ -1,78 +0,0 @@ - -# -# Ur-Krebs -# -define host{ - use generic-host - host_name krebs.shack - alias krebs - _tinc_address 10.7.7.156 - address 10.42.23.5 - parents shack-coreswitch - hostgroups krebs-machines,tinc-nodes,ssh-servers - } -# -# UTART -# -define host{ - use generic-host - host_name utart - alias UTART - _tinc_address 10.7.7.66 - address 10.42.23.23 - parents shack-coreswitch - hostgroups krebs-machines,tinc-nodes,ssh-servers - } -# -# ytart -# will use tinc ip as long as no static ip is supplied -# -define host{ - use generic-host - host_name ytart - alias ytart - _tinc_address 10.7.7.201 - parents shack-wlan-ap5 - address 10.7.7.201 - hostgroups krebs-machines,tinc-nodes,ssh-servers - } -# -# uPM -# -define host{ - use generic-host - host_name upm - alias uPM Virtual Machine - _tinc_address 10.7.7.99 - address upm.shack - parents shack-node1 - hostgroups krebs-machines,ssh-servers,shack-rz - #,tinc-nodes - } - -# TODO add upm and genericore as tinc-nodes -# TODO check MONGODB on uPM - - - -#TODO verkrebse genericore/get password -define host{ - use generic-host - host_name genericore - alias genericore Virtual Machine - #_tinc_address 10.7.7.XX - address genericore.shack - parents shack-node1 - hostgroups ssh-servers,shack-rz - #,tinc-nodes,krebs-machines - } - -define host{ - use generic-host - host_name shepherd - alias Shepherd Krebs - _tinc_address 10.7.7.29 - address 10.42.23.42 - parents shack-coreswitch - hostgroups krebs-machines,tinc-nodes,ssh-servers - } diff --git a/modules/Monitoring/conf/krebsnet.cfg b/modules/Monitoring/conf/krebsnet.cfg deleted file mode 100644 index ae5b898e..00000000 --- a/modules/Monitoring/conf/krebsnet.cfg +++ /dev/null @@ -1,20 +0,0 @@ -## extended infos for krebsnet -define hostgroup { - hostgroup_name krebs-machines - alias Krebs Machines - } -define hostextinfo{ - hostgroup_name krebs-machines - notes Deployed Krebse -# notes_url http://webserver.localhost.localdomain/hostinfo.pl?host=netware1 - icon_image krebs/krebs.png - icon_image_alt Krebs - vrml_image krebs.png - statusmap_image krebs/krebs.gd2 - } -#define host{ -# use generic-host -# register 0 -# name tinc-only-host -# check_command check_internal_tinc_up!100.0,20%!500.0,60% -# } diff --git a/modules/Monitoring/conf/localhost.cfg b/modules/Monitoring/conf/localhost.cfg deleted file mode 100644 index 3b098195..00000000 --- a/modules/Monitoring/conf/localhost.cfg +++ /dev/null @@ -1,60 +0,0 @@ -# A simple configuration file for monitoring the local host -# This can serve as an example for configuring other servers; -# Custom services specific to this host are added here, but services -# defined in nagios2-common_services.cfg may also apply. -# - -define host{ - use generic-host ; Name of host template to use - host_name localhost - alias localhost - address 127.0.0.1 - hostgroups krebs-machines - } - -# Define a service to check the disk space of the root partition -# on the local machine. Warning if < 20% free, critical if -# < 10% free space on partition. - -define service{ - use generic-service ; Name of service template to use - host_name localhost - service_description Disk Space - check_command check_all_disks!20%!10% - } - - - -# Define a service to check the number of currently logged in -# users on the local machine. Warning if > 20 users, critical -# if > 50 users. - -define service{ - use generic-service ; Name of service template to use - host_name localhost - service_description Current Users - check_command check_users!20!50 - } - - -# Define a service to check the number of currently running procs -# on the local machine. Warning if > 250 processes, critical if -# > 400 processes. - -define service{ - use generic-service ; Name of service template to use - host_name localhost - service_description Total Processes - check_command check_procs!250!400 - } - - - -# Define a service to check the load on the local machine. - -define service{ - use generic-service ; Name of service template to use - host_name localhost - service_description Current Load - check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0 - } diff --git a/modules/Monitoring/conf/other_hosts.cfg b/modules/Monitoring/conf/other_hosts.cfg deleted file mode 100644 index bfc36154..00000000 --- a/modules/Monitoring/conf/other_hosts.cfg +++ /dev/null @@ -1,23 +0,0 @@ -define host{ - use generic-host - host_name google.de - alias Google Website - address google.de - parents shack-modem - hostgroups http-servers - } - -define host{ - use generic-host - host_name google-dns - parents shack-gw - parents shack-modem - alias Google DNS Service (always reachable) - address 8.8.8.8 - } -define service { - host_name google-dns - service_description DNS Service - use generic-service - check_command check_dns - } diff --git a/modules/Monitoring/conf/shack_infrastructure.cfg b/modules/Monitoring/conf/shack_infrastructure.cfg deleted file mode 100644 index dd123dc3..00000000 --- a/modules/Monitoring/conf/shack_infrastructure.cfg +++ /dev/null @@ -1,231 +0,0 @@ -# - -# -# Shack Virtual Machine Hoster Platform -# - -# -# Virtualization and storage -# -define host{ - use generic-host - host_name shack-node1 - alias Shack Virtualization Server - address 10.42.0.10 - parents shack-serverswitch - hostgroups shack-rz,ssh-servers - } -define host{ - use generic-host - host_name shack-zetbox - alias Shack Virtualization Server - address 10.42.0.10 - parents shack-serverswitch - hostgroups shack-rz,ssh-servers - } -define host{ - use generic-host - host_name shack-plattenschwein - parents shack-serverswitch - alias Shack Plattenschwein - address 10.42.0.12 - hostgroups shack-rz,ssh-servers - } -define host{ - use generic-host - host_name shack-gauda0 - parents shack-serverswitch - alias Shack gauda0 Mining Server - address gauda0.shack - hostgroups shack-rz - } -# -# Network Infrastructure -# - -# -## Shack gateway (no gateway-no internet) -# -define host{ - use generic-host - host_name shack-gw - parents shack-coreswitch - alias Watchguard Shack Gateway - address 10.42.0.1 - hostgroups shack-rz,ssh-servers - } -define host{ - use generic-host - host_name shack-modem - parents shack-gw - alias Shack Telecom VDSL Router - address 192.168.2.1 - hostgroups shack-rz - } -define host{ - use generic-host - host_name shack-externswitch - parents shack-gw - alias Shack External Switch (2.OG) - address 10.0.10.2 - hostgroups shack-rz - } - -define service { - host_name shack-gw - service_description DNS Service - use generic-service - check_command check_dns - } -define host{ - use generic-host - host_name shack-coreswitch - alias Shack Cisco Router Coreswitch - address 10.42.0.3 - hostgroups shack-rz,ssh-servers - } -define host{ - use generic-host - host_name shack-serverswitch - parents shack-coreswitch - alias Shack Cisco Router Serverswitch - address 10.42.0.4 - hostgroups shack-rz - } - -define host{ - use generic-host - host_name shack-wlan-ap1 - parents shack-coreswitch - alias Shack Wlan Access Point 1 - address 10.42.0.5 - hostgroups wlan-ap - } -define host{ - use generic-host - host_name shack-wlan-ap2 - parents shack-coreswitch - alias Shack Wlan Access Point 2 - address 10.42.0.6 - hostgroups wlan-ap - } -define host{ - use generic-host - host_name shack-wlan-ap3 - parents shack-coreswitch - alias Shack Wlan Access Point 3 - address 10.42.0.7 - hostgroups wlan-ap - } -define host{ - use generic-host - host_name shack-wlan-ap4 - parents shack-coreswitch - alias Shack Wlan Access Point 4 - address 10.42.0.8 - hostgroups wlan-ap - } -define host{ - use generic-host - host_name shack-wlan-ap5 - parents shack-coreswitch - alias Shack Wlan Access Point 5 - address 10.42.0.9 - hostgroups wlan-ap - } -# -# Voip Infrastructure -# -define host{ - use generic-host - host_name shack-voip - alias Shack Cisco VOIP Gateway - address 10.42.0.2 - parents shack-coreswitch - hostgroups shack-rz,http-servers - } - -define service{ - host_name shack-voip - service_description SIP Service - use generic-service - check_command check_sip - } - - - - - -# -# Shack DNS Server -# - -define host{ - use generic-host - host_name shack-dns - parents shack-zetbox - alias Shack DNS Virtual Host - address 10.42.0.100 - hostgroups shack-rz - } -define service { - host_name shack-dns - service_description DNS Service - use generic-service - check_command check_dns_shack - } - -define host{ - use generic-host - host_name shack-pxe - parents shack-zetbox - alias Shack PXEBoot Vhost - address pxeboot.shack - hostgroups shack-rz - } - -define host{ - use generic-host - host_name shack-printsrv - parents shack-node1 - alias Shack Print Server - address printer.shack - hostgroups shack-rz - } - -define host{ - use generic-host - host_name shack-aptproxy - parents shack-zetbox - alias Shack Apt-proxy - address aptproxy.shack - hostgroups shack-rz - } - -define host{ - use generic-host - host_name shack-shack - parents shack-node1 - alias Shack Data Exchange - address shack.shack - hostgroups shack-rz,ssh-servers - } - -# -# shack ldap server -# -define host{ - use generic-host - host_name shack-ldap - parents shack-zetbox - alias Shack LDAP Server - address ldap.shack - hostgroups shack-rz - } -define service { - host_name shack-ldap - service_description LDAP Service - use generic-service - check_command check_ldap!shammunity - } - diff --git a/modules/Monitoring/conf/shacknet.cfg b/modules/Monitoring/conf/shacknet.cfg deleted file mode 100644 index 7658ab80..00000000 --- a/modules/Monitoring/conf/shacknet.cfg +++ /dev/null @@ -1,34 +0,0 @@ -define hostgroup { - hostgroup_name shack-rz - alias Shack RZ Infrastructure - } -define hostgroup { - hostgroup_name wlan-ap - alias Shack Wlan Access Points - } -define hostextinfo{ - hostgroup_name wlan-ap - notes Access Points for Shack - icon_image krebs/wireless_access_point.png - icon_image_alt wireless_access_point - vrml_image wireless_access_point.png - statusmap_image krebs/wireless_access_point.gd2 - } -define hostextinfo{ - hostgroup_name shack-rz - notes Shack RZ Infrastructure - icon_image krebs/shack.png - icon_image_alt shack-RZ - vrml_image shack.png - statusmap_image krebs/shack.gd2 - } - -define command { - command_name check_sip - command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 5060 - } - -define command { - command_name check_dns_shack - command_line $USER1$/check_dns -H shack.shack -s '$HOSTADDRESS$' - } diff --git a/modules/Monitoring/conf/tinc_hosts.cfg b/modules/Monitoring/conf/tinc_hosts.cfg deleted file mode 100644 index 23c2b75e..00000000 --- a/modules/Monitoring/conf/tinc_hosts.cfg +++ /dev/null @@ -1,45 +0,0 @@ -#connection will not work if no internet is available (e.g. no shack-gateway) - -# -# Miefda Supernode -# -define host{ - use generic-host - host_name supernode - alias Supernode External - _TINC_ADDRESS 10.7.7.1 - address miefda.org - parents shack-modem - hostgroups tinc-nodes,ssh-servers,http-servers - } - -define service { - host_name supernode - service_description IRC - use generic-service - check_command check_ircd - } -# -# Sharepoint (dhbw-stuttgart) -# -define host{ - use generic-host - host_name sharepoint - alias PA Sharepoint - address 141.31.8.11 - _TINC_ADDRESS 10.7.7.5 - parents shack-modem - hostgroups tinc-nodes,ssh-servers - } -# -# Leechi -# -define host{ - use generic-host - host_name leechi - alias no_omo - address leechi.kicks-ass.org - _TINC_ADDRESS 10.7.7.111 - parents shack-modem - hostgroups tinc-nodes,ssh-servers,http-servers - } diff --git a/modules/Monitoring/conf/tincnet.cfg b/modules/Monitoring/conf/tincnet.cfg deleted file mode 100644 index f0b35b4e..00000000 --- a/modules/Monitoring/conf/tincnet.cfg +++ /dev/null @@ -1,31 +0,0 @@ -define hostgroup { - hostgroup_name tinc-nodes - alias Tinc Nodes - } - -define hostextinfo{ - hostgroup_name tinc-nodes - notes Tinc Nodes - icon_image krebs/tinc.png - icon_image_alt tinc - vrml_image tinc.png - statusmap_image krebs/tinc.gd2 - } - -define command { - command_name check_internal_tinc_up - command_line $USER1$/check_ping -H $_HOSTTINC_ADDRESS$ -w $ARG1$ -c $ARG2$ - } -define command { - command_name check_ircd - command_line $USER1$/check_ircd $_HOSTTINC_ADDRESS$ - } - -define service { - hostgroup_name tinc-nodes - service_description tinc internal - check_command check_internal_tinc_up!100.0,20%!500.0,60% - use generic-service - notification_interval 0 -} - diff --git a/modules/Monitoring/htdocs/images/logos/krebs/favicon.ico b/modules/Monitoring/htdocs/images/logos/krebs/favicon.ico deleted file mode 100644 index fa18384c..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/favicon.ico and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/krebs.gd2 b/modules/Monitoring/htdocs/images/logos/krebs/krebs.gd2 deleted file mode 100644 index 1113f03e..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/krebs.gd2 and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/krebs.png b/modules/Monitoring/htdocs/images/logos/krebs/krebs.png deleted file mode 100644 index 3d8a8ab8..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/krebs.png and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/shack.gd2 b/modules/Monitoring/htdocs/images/logos/krebs/shack.gd2 deleted file mode 100644 index 8b0d98e5..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/shack.gd2 and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/shack.png b/modules/Monitoring/htdocs/images/logos/krebs/shack.png deleted file mode 100644 index 53f1275b..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/shack.png and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/tinc.gd2 b/modules/Monitoring/htdocs/images/logos/krebs/tinc.gd2 deleted file mode 100644 index 36572d4a..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/tinc.gd2 and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/tinc.png b/modules/Monitoring/htdocs/images/logos/krebs/tinc.png deleted file mode 100644 index daa1fdeb..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/tinc.png and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point.gd2 b/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point.gd2 deleted file mode 100644 index 6e740ec4..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point.gd2 and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point.png b/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point.png deleted file mode 100644 index 9febe45e..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point.png and /dev/null differ diff --git a/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point_64.png b/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point_64.png deleted file mode 100644 index fe9788af..00000000 Binary files a/modules/Monitoring/htdocs/images/logos/krebs/wireless_access_point_64.png and /dev/null differ diff --git a/modules/Monitoring/plugins/check_sip b/modules/Monitoring/plugins/check_sip deleted file mode 100755 index 24374727..00000000 --- a/modules/Monitoring/plugins/check_sip +++ /dev/null @@ -1,252 +0,0 @@ -#!/usr/bin/perl -w -# -# check_sip plugin for nagios -# $Revision: 1.2 $ -# -# Nagios plugin to check SIP servers -# -# By Sam Bashton, Bashton Ltd -# bashton.com/content/nagiosplugins -# Michael Hirschbichler, Institute of Broadband Communications, -# Vienna University of Technology -# -# 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, or -# (at your option) any later version. -# -# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -use strict; -use lib "/usr/lib/nagios/plugins"; -use utils qw($TIMEOUT %ERRORS &print_revision &support); -use vars qw($PROGNAME); -use IO::Socket::INET; -#use Sys::Hostname; -use Time::HiRes qw(gettimeofday); -use Net::Domain qw (hostname hostfqdn hostdomain); - -$PROGNAME = "check_sip"; -my $VERSION = "1.2"; - -$ENV{'BASH_ENV'}=''; -$ENV{'ENV'}=''; -$ENV{'PATH'}=''; -$ENV{'LC_ALL'}='C'; - -my ($opt_V,$opt_h,$opt_u,$opt_p,$opt_H, $opt_w, $opt_s, $opt_f); -$opt_V = $opt_h = $opt_u = $opt_p = $opt_H = $opt_w = $opt_s = $opt_f = ''; - -my $state = 'UNKNOWN'; - -use Getopt::Long; -Getopt::Long::Configure('bundling'); -GetOptions( - "V" => \$opt_V, "version" => \$opt_V, - "h" => \$opt_h, "help" => \$opt_h, - "s" => \$opt_s, - "f=s" => \$opt_f, "fromuri=s" => \$opt_f, - "u=s" => \$opt_u, "uri=s" => \$opt_u, - "p=s" => \$opt_p, "port=s" => \$opt_p, - "H=s" => \$opt_H, "host=s" => \$opt_H, - "w=s" => \$opt_w, "warn=s" => \$opt_w -); - -# -h displays help -if ($opt_h) { printHelp(); exit $ERRORS{'OK'}; } - -# -V display version number -if ($opt_V) { - print_revision($PROGNAME, $VERSION); - exit $ERRORS{'OK'}; -}; - -# Check the sip URI is OK -unless ($opt_u) { printHelp(); exit $ERRORS{'UNKNOWN'} } - -# Port is 5060 unless otherwise specified -unless ($opt_p) { $opt_p = 5060 } - -# Determine the host from the sip URI if it wasn't specified with -H -unless ($opt_H) { $opt_H = hostFromURI($opt_u) } - -# Check the host is valid -unless (utils::is_hostname($opt_H)) -{ - print "$opt_H is not a valid hostname\n"; - printHelp(); - exit $ERRORS{"UNKNOWN"}; -} - -unless ($opt_w) { $opt_w = 5 } # Warn if response takes longer than 5 seconds - -### Main code ############################################################### - -# Timeout if we don't recieve a response within a suitable timeframe.. -$SIG{'ALRM'} = sub { - print ("SIP timeout: No response from SIP server after $TIMEOUT seconds\n"); - exit $ERRORS{"CRITICAL"}; -}; -alarm($TIMEOUT); - -my $localhost = hostfqdn(); -$opt_f = getFromURI($opt_f,$localhost,$opt_p); -my $user=getUserPart($opt_f); -my $socket = uconnect($opt_H, $opt_p); -my @localinfo = unpack_sockaddr_in($socket->sockname); -my $req = buildReq($localinfo[0], $opt_u, $opt_f,$user,$localhost); -my (undef, $starttime) = gettimeofday; -$socket->send($req); -my $response; -$socket->recv($response, 1024) or $state = 'CRITICAL'; - -#get rid of the 100 Trying - provisional response ... -if (getResponseCode($response) eq "100"){ - $socket->recv($response, 1024) or $state = 'CRITICAL'; -} - -my (undef, $finishtime) = gettimeofday; -my $rtime = ($finishtime - $starttime) / 1000000; # Time taken in seconds -if(checkResponse($response,$rtime,$opt_s)) -{ - if ($rtime > $opt_w) { $state = 'WARNING' } - else { $state = 'OK' } -} -else { $state = 'CRITICAL' } - -exit $ERRORS{$state}; - -### Subroutines ############################################################## - - -sub uconnect -{ - my ($host, $port) = @_; - my $socket = new IO::Socket::INET->new(PeerPort=>$port, Proto=>'udp', PeerAddr=>$host); - unless ($socket) { print "Unable to connect to $host\n"; exit $ERRORS{'UNKNOWN'} } - return $socket; -} - -sub getFromURI{ - my ($from, $localhost,$localport) = @_; - if (!("$from" eq "")){ - return "$from:$localport"; - }else - { - return "sip:checksip\@$localhost:$localport"; - } -} - -sub getUserPart{ - my ($uri) = @_; - my @uris=split(/\@/,$uri); - my $user=$uris[0]; - return $user; -} - -sub hostFromURI -{ - my ($uri) = @_; - $uri =~ s/sip:[^\@]+@//; - return $uri; -} - -sub getResponseCode -{ - my ($message) = @_; - my @messageparts=split(/\ /,$message); - return $messageparts[1]; -} - -sub buildReq -{ - my ($localport, $dsturi, $fromuri,$user,$localhost) = @_; - - my $req; - my $tag = genTag(); - my $idtag = genTag(); - $req.= "OPTIONS $dsturi SIP/2.0\r\n"; - $req.= "Via: SIP/2.0/UDP $localhost:$localport;branch=z9hG4bKhjhs8ass877\r\n"; - $req.= "Max-Forwards: 70\r\n"; - $req.= "To: $dsturi\r\n"; - $req.= "From: $fromuri;tag=$tag\r\n"; - $req.= "Call-ID: $idtag\@$localhost\r\n"; - $req.= "CSeq: 1 OPTIONS\r\n"; - $req.= "Contact: <$user\@$localhost:$localport>\r\n"; - $req.= "Accept: application/sdp\r\n"; - $req.= "Content-Length: 0\r\n\r\n"; - return $req; -} - -sub genTag -{ - my $tag; - my @chars = ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p', - 'q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8', - '9'); - - for (my $i = 0; $i < 6; $i++) - { - $tag .= $chars[rand(scalar @chars)]; - } - return $tag; -} - -sub printHelp -{ - print "This plugin tests the sip service on the specified host.\n\n"; - print "Usage: $PROGNAME -u sip:uri\@example.com [-H host -p PORT -f sip:fromuri\@example.com -w WARNTIME -s]\n"; - print " $PROGNAME [-h | --help]\n"; - print " $PROGNAME [-V | --version]\n\n"; - print "Options:\n"; - print " -u sip:uri\@example.com\n"; - print " Full SIP uri, eg sip:uri\@example.com\n"; - print " -h, --help\n"; - print " Print this help\n"; - print " -V, --version\n"; - print " Print version information\n"; - print " -H host\n"; - print " Host name or IP Address to connect to\n"; - print " -p port\n"; - print " Port to connect to\n"; - print " -f sip:fromuri\@example.com\n"; - print " Full SIP uri, will be used for the \"From:\"-Header\n"; - print " -s\n"; - print " Changes default behavior: all SIP-responses will result in an \"OK\"\n\n"; - - -} - -sub checkResponse -{ - my ($response, $rtime, $sp_behavior) = @_; - my @header=split(/\r/,$response); - my $tstring=$header[0]; - my $rcode=getResponseCode($response); - if (!$sp_behavior){ - #in this case, we want to see if the SIP-server is respoding positively to our request - # Some SUT respond with 100 Trying - assume everything is OK if we get this - if ($response =~ /^SIP.+[12]00/){ - print "$tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n"; - return 1; - } - elsif ($response =~ /^SIP.+404 Not Found/) { - print "$tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n"; - return 0 } - else { print "Unknown error: $tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n"; return 0; } - }else{ - #in this case, we accept every response from the server, as long it is SIP - if ($response =~ /^SIP./){ - print "$tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n"; - return 1; - } - else { print "Unknown error: $tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n"; return 0; } - } -} -- cgit v1.2.3