From 04def756bc906ebb22cb55f64fbf3ea31f943372 Mon Sep 17 00:00:00 2001 From: Lars Kruse Date: Sun, 6 Nov 2016 13:46:07 +0100 Subject: [PATCH] [asterisk] cleanup linebreak handling and single/plurals (Closes: #698) lelutin proposed some changes: * the total is 0 if there is only one channel active (due to "channel" vs. "channels") * linebreaks "\r\n" are expected See https://github.com/munin-monitoring/contrib/issues/698 --- plugins/asterisk/asterisk | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/plugins/asterisk/asterisk b/plugins/asterisk/asterisk index e6581e11..75a203ed 100755 --- a/plugins/asterisk/asterisk +++ b/plugins/asterisk/asterisk @@ -85,8 +85,8 @@ sub asterisk_command { # Response: (Error|Follows|???) $line = $socket->getline; - if ($line ne "Response: Follows\r\n") { - while ( $line = $socket->getline and $line ne "\r\n" ) {} + if ($line !~ /^Response: Follows\r?\n$/) { + while ( $line = $socket->getline and $line !~ /^\r?\n$/ ) {} return undef; } @@ -94,12 +94,12 @@ sub asterisk_command { $line = $socket->getline; # Until we get the --END COMMAND-- marker, it's the command's output. - while ( $line = $socket->getline and $line ne "--END COMMAND--\r\n" ) { + while ( $line = $socket->getline and $line !~ /^--END COMMAND--\r?\n$/ ) { $reply .= $line; } # And then wait for the empty line that says we're done - while ( $line = $socket->getline and $line ne "\r\n" ) {} + while ( $line = $socket->getline and $line !~ /^\r?\n$/ ) {} return $reply; } @@ -130,13 +130,13 @@ if ( $socket ) { $socket->print("Action: login\nUsername: $username\nSecret: $secret\nEvents: off\n\n"); my $response_status = $socket->getline; - if ( $response_status ne "Response: Success\r\n" ) { + if ( $response_status !~ /^Response: Success\r?\n$/ ) { my $response_message = $socket->getline; - $response_message =~ s/Message: (.*)\r\n/$1/; + $response_message =~ s/Message: (.*)\r?\n/$1/; $error = "Asterisk authentication error: " . $response_message; } - while ( $line = $socket->getline and $line ne "\r\n" ) {} + while ( $line = $socket->getline and $line !~ /^\r?\n$/ ) {} } if ( $ARGV[0] and $ARGV[0] eq 'autoconf' ) { @@ -251,7 +251,7 @@ my $iaxchannels_response = asterisk_command($socket, "iax2 show channels"); $socket->close(); my $active_channels = 'U'; -$active_channels = $1 if $channels_response =~ /\n([0-9]+) active channels/; +$active_channels = $1 if $channels_response =~ /\n([0-9]+) active channels?/; print <