2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/other/teamspeak_user
2011-12-18 15:10:20 +01:00

65 lines
1.7 KiB
Perl
Executable File

#!/usr/bin/perl -w
# teamspeak_user.pl
# Munin Plugin for Teamspeak3 Servers
# displays the number of connected users on TS3 servers
#######################################################
#
# by Tim Wulkau - www.wulkau.de
#
# 31.01.10 - v0.2
# -fixed multiserver support
# -corrected usercount
# 17.01.10 - v0.1
# -initial release
#
######################################################
use strict;
use Net::Telnet;
# CONFIG HERE!
my $hostname = "localhost"; # serveraddress
my $port = 10011; # querryport (default: 10011)
my @serverids = (1); # array of virtualserverids (1,2,3,4,...)
# SCRIPT START!
if(exists $ARGV[0] and $ARGV[0] eq "config")
{
print "graph_title Teamspeak User\n";
print "graph_vlabel Connected Teamspeak Users\n";
print "graph_category Teamspeak\n";
print "graph_info This graph shows the number of connected users on a Teamspeak3 server\n";
foreach my $server (@serverids)
{
print "$server.label Users on Serverid $server\n";
print "$server.type GAUGE\n";
#print "$server.draw AREA\n";
}
exit 0;
}
else
{
my $telnet = new Net::Telnet(Timeout=>5, Errmode=>"return", Prompt=>"/\r/");
if ($telnet->open(Host=>$hostname, Port=>$port) != 1) {
die exit;
}
$telnet->waitfor("/TS3/");
foreach my $server (@serverids)
{
$telnet->cmd("use sid=$server");
$telnet->waitfor("/error id=0 msg=ok/");
$telnet->cmd("serverinfo");
my $line = $telnet->getline(Timeout=>5);
if ($line =~ m/virtualserver_clientsonline=(\d+) /) {
print "$server.value ".($1-1)."\n";
}
else {
print "$server.value 0\n";
}
$telnet->waitfor("/error id=0 msg=ok/");
}
$telnet->close;
}
exit;