#!/usr/bin/perl -w
use strict;
use LWP::Simple;
require HTML::TokeParser;
use RRDs;
$|=1;
my $url = "http://admin:admin\@ip.ad.dr.ess/statsadsl.html";
sub get_values() {
my $rawHTML;
do {
$rawHTML = get($url);
} while (! $rawHTML);
my $tp = HTML::TokeParser->new(\$rawHTML) || die "Can't open: $!";
my $ret = "N";
while (my $token = $tp->get_tag("td")) {
my $text = $tp->get_text;
if ($text eq "") {
$token = $tp->get_token;
my ($ttype, $tag, $attr, $attrseq, $rawtext) = @{ $token };
if ($tag eq "nobreak") {
$text = $tp->get_text;
}
}
if ($text eq "SNR Margin (dB):" ||
$text eq "Attenuation (dB):" ||
$text eq "Attainable Rate (Kbps):" ||
$text eq "Rate (Kbps):"
) {
$tp->get_tag("td") || die "Unexpected!";
my $down = substr($tp->get_text, 0, -1) || "U";
$tp->get_tag("td") || die "Unexpected!";
my $up = substr($tp->get_text, 0, -1) || "U";
$ret .= ":$down:$up";
}
}
undef $rawHTML;
undef $tp;
return $ret;
}
while(1) {
my $update = get_values();
print "$update\n";
RRDs::update("adsl.rrd", $update);
sleep 30 - time() % 30;
}