packages: nagios-plugin-check_asterisk_skype/check_asterisk_skype - check u...

glen glen at pld-linux.org
Mon Mar 1 17:06:29 CET 2010


Author: glen                         Date: Mon Mar  1 16:06:29 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- check users status
- fix variable conflict with $status
- fix return from parse loop

---- Files affected:
packages/nagios-plugin-check_asterisk_skype:
   check_asterisk_skype (1.4 -> 1.5) 

---- Diffs:

================================================================
Index: packages/nagios-plugin-check_asterisk_skype/check_asterisk_skype
diff -u packages/nagios-plugin-check_asterisk_skype/check_asterisk_skype:1.4 packages/nagios-plugin-check_asterisk_skype/check_asterisk_skype:1.5
--- packages/nagios-plugin-check_asterisk_skype/check_asterisk_skype:1.4	Mon Mar  1 16:26:58 2010
+++ packages/nagios-plugin-check_asterisk_skype/check_asterisk_skype	Mon Mar  1 17:06:24 2010
@@ -50,15 +50,15 @@
 	while (<$fh>) {
 		chomp;
 
-		if (my($file, $key, $expires, $hostid, $channels, $status) = m/
+		if (my($file, $key, $expires, $hostid, $channels, $state) = m/
 			File:\s+(\S+)\s+--\s+
 			Key:\s+(\S+)\s+--\s+
 			Expires:\s+([-\d]+)\s+--\s+
 			Host-ID:\s+([\da-f:]+)\s+--\s+
 			Channels:\s+(\d+)\s+\((\S+)\)
 			/x) {
-			$message .= "License $status: $channels channels, expires $expires";
-			if ($status ne 'OK') {
+			$message .= "License $state: $channels channels, expires $expires";
+			if ($state ne 'OK') {
 				$status = $ERRORS{CRITICAL};
 			}
 			next;
@@ -68,12 +68,64 @@
 		if (/ERROR:|Unable to connect/) {
 			$status = $ERRORS{CRITICAL};
 			$message .= $_;
-			return;
+			next;
 		}
 	}
 	close $fh || die "asterisk exited with: $?\n";
 }
 
+sub check_skype_user {
+
+	my $pid = open(my $fh, '-|');
+	if ($pid == 0) {
+		# child
+		# redirect stderr
+		open STDERR, '>&STDOUT';
+		my @CMD = ('asterisk', '-rx', 'skype show users');
+		exec @CMD or die "ERROR: Could not execute '@CMD': $!\n";
+
+	} elsif($pid == -1) {
+		die("fork() failed");
+	}
+
+	# parent
+	my $in = 0;
+	my @status;
+	while (<$fh>) {
+		chomp;
+
+		$in = 1,next if /Skype Users/;
+		next unless $in;
+
+		if (my ($user, $state) = /^(\S+):\s+(.*)/) {
+			push(@status, $state);
+			# Connecting to P2P Network => WARNING
+			# Connecting to Server => WARNING
+			# Logged In => OK
+			if ($state ne 'Logged In') {
+				# assume warning
+				$status = $ERRORS{WARNING} unless $status;
+			}
+			next;
+		}
+
+		# This proceses STDERR messages
+		if (/ERROR:|Unable to connect/) {
+			$status = $ERRORS{CRITICAL};
+			$message .= $_;
+			next;
+		}
+	}
+	close $fh || die "asterisk exited with: $?\n";
+
+	if (@status) {
+		$message .= "; User: ".join(', ', @status);
+	} else {
+		$status = $ERRORS{WARNING} unless $status;
+		$message .= "; No skype user setup";
+	}
+}
+
 #####################################################################
 $ENV{'BASH_ENV'} = '';
 $ENV{'ENV'} = '';
@@ -98,6 +150,7 @@
 $message = '';
 
 check_skype_license;
+check_skype_user;
 
 if ($message) {
 	if ($status == $ERRORS{OK}) {
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/nagios-plugin-check_asterisk_skype/check_asterisk_skype?r1=1.4&r2=1.5&f=u



More information about the pld-cvs-commit mailing list