diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-01-26 05:45:07 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-01-26 05:45:07 +0000 |
commit | e9c8d54d7fde487a4566da432eebf17bdd9dc741 (patch) | |
tree | a9554d1f738dec1fe1a3595131a0f476fde77624 /contrib/scripts | |
parent | 26b680b68eede618b50cb88fdcf486835c587ad2 (diff) |
Move qview to the right place
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2074 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'contrib/scripts')
-rwxr-xr-x | contrib/scripts/qview.pl | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/contrib/scripts/qview.pl b/contrib/scripts/qview.pl new file mode 100755 index 000000000..940e474f7 --- /dev/null +++ b/contrib/scripts/qview.pl @@ -0,0 +1,100 @@ +#!/usr/bin/perl +# +# Asterisk Queue Viewer +# Uses management interface to query call queues on a machine +# (C) 2003 David C. Troy -- dave@toad.net +# +# This program is free software, distributed under the terms of the +# GNU General Public License +# + +use IO::Socket; +use CGI qw(:standard); +use CGI::Carp qw/fatalsToBrowser/; + +$host = "asterisk.yourdomain.com"; +$port = 5038; +$user = "manager_user"; +$secret = "Manager_secret"; +$EOL = "\015\012"; +$BLANK = $EOL x 2; +$queue = param('queue'); + +$remote = IO::Socket::INET->new( + Proto => 'tcp', # protocol + PeerAddr=> $host, # Address of server + PeerPort=> $port, # port of server + Reuse => 1 + ) or die "$!"; + +$remote->autoflush(1); # Send immediately + +# Login and get our booty from Asterisk +$logres = send_cmd("Action: Login${EOL}Username: $user${EOL}Secret: $secret$BLANK"); +$qinfo = send_cmd("Action: queues$BLANK$EOL"); +$logres = send_cmd("Action: Logoff$BLANK"); +close $remote; # Close socket + +my %qcalls = map { /(\S+)\s+has (\d+) calls.*?\n\n/sg; } $qinfo; +my %qmax = map { /(\S+)\s+has \d+ calls \(max (\S+)\).*?\n\n/sg; } $qinfo; +my %qstrat = map { /(\S+)\s+has \d+ calls \(max \S+\) in (\S+) strategy.*?\n\n/sg; } $qinfo; +my %qmems = map { /(\S+)\s+has \d+ calls.*?Members:.*?\s{6}(.*?)\s{3}\S*?\s*?Callers/sg; } $qinfo; +my %qcallers = map { /(\S+)\s+has \d+ calls.*?([No ]*Callers.*?)\n\n/sg; } $qinfo; + +print header(); +print start_html(-head=>meta({-http_equiv=>'Refresh', -content=>'120'}), + -title=>"PBX Queue Viewer", + -style=>{'src'=>'/pbxinfo.css'}); +print "<table width=850><tr>"; + +$col = 0; + +foreach $q (keys %qcalls) { + + $mems = $qmems{$q}; + $mems =~ s/ //g; + $mems =~ s/\n/<br>\n/g; + $callers = $qcallers{$q}; + $callers =~ s/ //g; + $callers =~ s/Callers:.*\n//g; + $callers =~ s/\n/<br>/g; + + print qq{<td valign=top width=48%><table width=100%> +<tr><th colspan=2><A HREF=/mrtg/qmon-$q.html>$q</A> $qcalls{$q} calls (max $qmax{$q}), $qstrat{$q} strategy</th></tr> +<tr><td valign=top width=55%>$mems</td><td valign=top width=45%>$callers</td></tr> +</table></td> +}; + + print "</tr><tr>" if $col; + $col = 0 if $col++; + +} + +print "</table>"; + +print end_html(); + +exit(0); + +sub read_conn { + + my $buf=""; + while (<$remote>) { + last if $_ eq $EOL; + s/$EOL/\n/g; + $buf .= $_; + } + + return $buf +} + +sub send_cmd { + my $cmd = @_[0]; + + my $buf=""; + print $remote $cmd; + + $buf = read_conn(); + + return $buf; +} |