mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
81 lines
2.3 KiB
Perl
Executable File
81 lines
2.3 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
|
||
#
|
||
# 18.11.10 - v0.4
|
||
# -added queryuser login
|
||
# -subtract queryclients from usercount (tanks to Jakob Lenfers for the idea)
|
||
# 02.10.10 - v0.3
|
||
# -fixed welcomemessage error
|
||
# 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,...)
|
||
|
||
my $username = ""; # only set if the default queryuser hasn´t enough rights (should work without this)
|
||
my $password = "";
|
||
|
||
# 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 voip\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)) {
|
||
die exit;
|
||
}
|
||
$telnet->waitfor("/Welcome to the TeamSpeak 3 ServerQuery interface/");
|
||
foreach my $server (@serverids)
|
||
{
|
||
$telnet->cmd("use sid=$server");
|
||
$telnet->waitfor("/error id=0 msg=ok/");
|
||
if($username && $password) {
|
||
$telnet->cmd("login $username $password");
|
||
$telnet->waitfor("/error id=0 msg=ok/");
|
||
}
|
||
$telnet->cmd("serverinfo");
|
||
|
||
my $clients = 0;
|
||
my $queryclients = 0;
|
||
my $line = $telnet->getline(Timeout=>5);
|
||
if ($line =~ m/virtualserver_clientsonline=(\d+) /) {
|
||
$clients = $1;
|
||
}
|
||
if ($line =~ m/virtualserver_queryclientsonline=(\d+) /) {
|
||
$queryclients = $1;
|
||
}
|
||
$telnet->waitfor("/error id=0 msg=ok/");
|
||
print "$server.value ".($clients - $queryclients)."\n";
|
||
}
|
||
$telnet->close;
|
||
}
|
||
exit;
|