#!/usr/bin/perl use IO::Socket::INET; $num_args = $#ARGV + 1; if ( ($num_args == 0) or (($num_args == 1) && (($ARGV[0] eq "--help") or ($ARGV[0] eq "-h"))) ) { showusage(); exit; } # auto-flush on socket $| = 1; my $argumentstring = ""; my $ip = "127.0.0.1"; my $port = "9900"; for (my $argnum=0; $argnum <= $#ARGV; $argnum++) { if ($ARGV[$argnum] eq "-ip") { die "No argument after -ip\n" unless $argnum+1<=$#ARGV; $argnum = $argnum+1; $ip = $ARGV[$argnum]; } elsif ($ARGV[$argnum] eq "-port") { die "No argument after -port\n" unless $argnum+1<=$#ARGV; $argnum = $argnum+1; $port = $ARGV[$argnum]; } else { $argumentstring .= "$ARGV[$argnum] "; } } # create a connecting socket my $socket = new IO::Socket::INET ( PeerHost => $ip, PeerPort => $port, Proto => 'tcp', ); die "Cannot connect to the rtpengine $!\n" unless $socket; $argumentstring = trim($argumentstring); my $size = $socket->send($argumentstring); # notify server that request has been sent shutdown($socket, 1); # receive a response of up to 10MB my $response = ""; do { $response = ""; $socket->recv($response, 1024*1024*10); print $response; } while ( not $response eq ""); $socket->close(); sub showusage { print "\n"; print " rtpengine-ctl [ -ip -port ] \n"; print "\n"; print " Supported commands are:\n"; print "\n"; print " list [ numsessions | maxsessions | maxopenfiles | sessions [ | all | own | foreign ] | totals ]\n"; print " numsessions : print the number of sessions\n"; print " maxsessions : print the number of allowed sessions\n"; print " maxopenfiles : print the number of allowed open files\n"; print " sessions : print detail about one session\n"; print " sessions all : print one-liner all sessions information\n"; print " sessions own : print one-liner own sessions information\n"; print " sessions foreign : print one-liner foreign sessions information\n"; print " totals : print total statistics\n"; print " timeout : print timout parameters\n"; print "\n"; print " terminate [ | all | own | foreign ]\n"; print " : session is immediately terminated\n"; print " all : terminates all current sessions\n"; print " own : terminates own current sessions\n"; print " foreign : terminates foreign current sessions\n"; print "\n"; print " set [ maxsessions | maxopenfiles | timeout | silent_timeout | final_timeout ]\n"; print " maxsessions : set the max nr of allowed sessions\n"; print " maxopenfiles : set the max nr of allowed open files\n"; print " timeout : set the --timeout parameter \n"; print " silenttimeout : set the --silent-timeout parameter \n"; print " finaltimeout : set the --final-timeout parameter \n"; print "\n"; print " ksadd [ keyspace ]\n"; print " keyspace : subscribe to 'keyspace' database\n"; print "\n"; print " ksrm [ keyspace ]\n"; print " keyspace : unsubscribe to 'keyspace' database\n"; print " : remove all foreign calls for that 'keyspace'\n"; print "\n"; print " kslist : print all currently subscribed keyspaces\n"; print "\n"; print "\n"; print " Return Value:\n"; print " 0 on success with ouput from server side, other values for failure.\n"; print "\n"; } sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s };