freemobile-munin: Fix typos, indentation, documentation
This commit is contained in:
parent
4422a25421
commit
d806585109
1 changed files with 115 additions and 117 deletions
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
=head1 NAME
|
||||
|
||||
freemobile - Plugin to monitor a freemobile subscription
|
||||
copy this script to /etc/munin/plugins/freemobile
|
||||
freemobile - A plugin to monitor a freemobile subscription
|
||||
create a link to this script in /etc/munin/plugins/
|
||||
|
||||
=note1
|
||||
|
||||
|
|
@ -20,159 +20,157 @@ env.HOME /home/florent
|
|||
user florent
|
||||
group florent
|
||||
|
||||
You can configure the list of monitored data with the ligne:
|
||||
You can configure the list of monitored data with the line:
|
||||
env.freemonitored voice sms mms data
|
||||
|
||||
Others monitored options: voicetoint voiceint smsint mmsint dataint
|
||||
specialvoice
|
||||
|
||||
The cache timeout is 3 hours by default. You can change this value
|
||||
The cache timeout is 3 hours by default. You can change this value
|
||||
with env.cache_expire.
|
||||
|
||||
WARNING: Some monitored options are *not* tested by author
|
||||
|
||||
=cut
|
||||
use warnings;
|
||||
# Munin doesn't like utf-8 :-(
|
||||
use encoding "iso-8859-1";
|
||||
use Encode;
|
||||
use Encode;
|
||||
|
||||
my @monitored = split(/ /, $ENV{'freemonitored'} || 'voice sms');
|
||||
my $cachefile = $ENV{'HOME'} . '/.config/weboob/munin/freemobile-munin';
|
||||
my $refreshtime = $ENV{'cache_expire'} || 10800;
|
||||
my $refreshtime = $ENV{'cache_expire'} || 10800;
|
||||
my $weboob = "/usr/bin/env weboob-cli ICapBill get_details coin -f table |";
|
||||
|
||||
my %label = (
|
||||
'voice' => "Voix en France (min)\n",
|
||||
'voicetoint' => "Voix vers l'international (min)\n",
|
||||
'specialvoice' => "Numéro spéciaux (min) \n",
|
||||
'sms' => "SMS en France\n",
|
||||
'mms' => "MMS en France\n",
|
||||
'data' => "Data en France\n",
|
||||
'voiceint' => "Voix à l\'international (min)\n",
|
||||
'smsint' => "SMS à l\'international\n",
|
||||
'mmsint' => "MMS à l\'international\n",
|
||||
'dataint' => "Data à l\'international\n"
|
||||
);
|
||||
'voice' => "Voix en France (min)\n",
|
||||
'voicetoint' => "Voix vers l'international (min)\n",
|
||||
'specialvoice' => "Numéro spéciaux (min) \n",
|
||||
'sms' => "SMS en France\n",
|
||||
'mms' => "MMS en France\n",
|
||||
'data' => "Data en France\n",
|
||||
'voiceint' => "Voix à l\'international (min)\n",
|
||||
'smsint' => "SMS à l\'international\n",
|
||||
'mmsint' => "MMS à l\'international\n",
|
||||
'dataint' => "Data à l\'international\n"
|
||||
);
|
||||
|
||||
my %linenum = (
|
||||
'voice' => 3,
|
||||
'voicetoint' => 3,
|
||||
'specialvoice' => 4,
|
||||
'sms' => 5,
|
||||
'mms' => 6,
|
||||
'data' => 7,
|
||||
'voiceint' => 8,
|
||||
'smsint' => 9,
|
||||
'mmsint' => 10,
|
||||
'dataint' => 11
|
||||
);
|
||||
'voice' => 3,
|
||||
'voicetoint' => 3,
|
||||
'specialvoice' => 4,
|
||||
'sms' => 5,
|
||||
'mms' => 6,
|
||||
'data' => 7,
|
||||
'voiceint' => 8,
|
||||
'smsint' => 9,
|
||||
'mmsint' => 10,
|
||||
'dataint' => 11
|
||||
);
|
||||
|
||||
my %regexp = (
|
||||
'voice' => 'National : (\d+)h(\d+)min(\d+)s',
|
||||
'voicetoint' => 'International : (\d+)h(\d+)min(\d+)s',
|
||||
'specialvoice' => '\| (\d+)h(\d+) min (\d+)s',
|
||||
'sms' => 'Conso SMS \| (\d+) \/ (.*)',
|
||||
'mms' => 'Vous avez consommé (\d+) MMS',
|
||||
'data' => 'Vous avez consommé ([\d\-\.]+) Mo',
|
||||
'voiceint' => 'Appels émis (\d+)h(\d+)min(\d+)s',
|
||||
'smsint' => 'Conso SMS (international) \| (\d+)',
|
||||
'mmsint' => 'Vous avez consommé (\d+) MMS',
|
||||
'dataint' => 'Vous avez consommé ([\d\-]+) Mo'
|
||||
);
|
||||
'voice' => 'National : (\d+)h(\d+)min(\d+)s',
|
||||
'voicetoint' => 'International : (\d+)h(\d+)min(\d+)s',
|
||||
'specialvoice' => '\| (\d+)h(\d+) min (\d+)s',
|
||||
'sms' => 'Conso SMS \| (\d+) \/ (.*)',
|
||||
'mms' => 'Vous avez consommé (\d+) MMS',
|
||||
'data' => 'Vous avez consommé ([\d\-\.]+) Mo',
|
||||
'voiceint' => 'Appels émis (\d+)h(\d+)min(\d+)s',
|
||||
'smsint' => 'Conso SMS (international) \| (\d+)',
|
||||
'mmsint' => 'Vous avez consommé (\d+) MMS',
|
||||
'dataint' => 'Vous avez consommé ([\d\-]+) Mo'
|
||||
);
|
||||
|
||||
my %post = (
|
||||
'voice' => 'postvoice',
|
||||
'voicetoint' => 'postvoice',
|
||||
'specialvoice' => 'postvoice',
|
||||
'sms' => 'simplepost',
|
||||
'mms' => 'simplepost',
|
||||
'data' => 'simplepost',
|
||||
'voiceint' => 'postvoice',
|
||||
'smsint' => 'simplepost',
|
||||
'mmsint' => 'simplepost',
|
||||
'dataint' => 'simplepost'
|
||||
);
|
||||
'voice' => 'postvoice',
|
||||
'voicetoint' => 'postvoice',
|
||||
'specialvoice' => 'postvoice',
|
||||
'sms' => 'simplepost',
|
||||
'mms' => 'simplepost',
|
||||
'data' => 'simplepost',
|
||||
'voiceint' => 'postvoice',
|
||||
'smsint' => 'simplepost',
|
||||
'mmsint' => 'simplepost',
|
||||
'dataint' => 'simplepost'
|
||||
);
|
||||
|
||||
my @lines;
|
||||
my $cache;
|
||||
my $expr;
|
||||
|
||||
if ($ARGV[0] and $ARGV[0] eq "config") {
|
||||
binmode STDOUT, ":encoding(iso-8859-1)";
|
||||
print "graph_title Conso Free\n";
|
||||
print "graph_vlabel Suivi conso du forfait Free Mobile\n";
|
||||
print "graph_category weboob\n";
|
||||
print "graph_args -l 0\n";
|
||||
foreach (@monitored) {
|
||||
print "$_" . ".label ";
|
||||
print $label{$_};
|
||||
}
|
||||
binmode STDOUT, ":encoding(iso-8859-1)";
|
||||
print "graph_title Conso Free\n";
|
||||
print "graph_vlabel Suivi conso du forfait Free Mobile\n";
|
||||
print "graph_category weboob\n";
|
||||
print "graph_args -l 0\n";
|
||||
foreach (@monitored) {
|
||||
print "$_" . ".label ";
|
||||
print $label{$_};
|
||||
}
|
||||
}
|
||||
else {
|
||||
my $refresh;
|
||||
my $first = 1;
|
||||
my $time = time();
|
||||
# Check if cache exist and not older than 3 hours
|
||||
if (open(CACHE, "< " . $cachefile)) {
|
||||
$cache = 1;
|
||||
LOOP: while(<CACHE>) {
|
||||
if ($first) {
|
||||
if ($time - $_ > $refreshtime) {
|
||||
$refresh = 0;
|
||||
last;
|
||||
}
|
||||
else {
|
||||
$refresh = 1;
|
||||
}
|
||||
$first = 0;
|
||||
}
|
||||
else {
|
||||
print $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
close(CACHE);
|
||||
exit if $cache and $refresh;
|
||||
my $refresh;
|
||||
my $first = 1;
|
||||
my $time = time();
|
||||
# Check if cache exist and not older than 3 hours
|
||||
if (open(CACHE, "< " . $cachefile)) {
|
||||
$cache = 1;
|
||||
LOOP: while(<CACHE>) {
|
||||
if ($first) {
|
||||
if ($time - $_ > $refreshtime) {
|
||||
$refresh = 0;
|
||||
last;
|
||||
}
|
||||
else {
|
||||
$refresh = 1;
|
||||
}
|
||||
$first = 0;
|
||||
}
|
||||
else {
|
||||
print $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
close(CACHE);
|
||||
exit if $cache and $refresh;
|
||||
|
||||
# Open cache for writing and execute weboob
|
||||
open(CACHE, "> " . $cachefile) or die "Failed to open file $cachefile";
|
||||
open(DATA, $weboob) or die "Couldn't execute program: $!";
|
||||
LOOP: while (<DATA>) {
|
||||
push(@lines,$_);
|
||||
}
|
||||
close(DATA);
|
||||
print CACHE time(). "\n";
|
||||
# Open cache for writing and execute weboob
|
||||
open(CACHE, "> " . $cachefile) or die "Failed to open file $cachefile";
|
||||
open(DATA, $weboob) or die "Couldn't execute program: $!";
|
||||
LOOP: while (<DATA>) {
|
||||
push(@lines,$_);
|
||||
}
|
||||
close(DATA);
|
||||
print CACHE time(). "\n";
|
||||
|
||||
foreach $monit (@monitored) {
|
||||
doubleprint("$monit" . ".value ");
|
||||
if ($lines[$linenum{$monit}] =~ /$regexp{$monit}/ ) {
|
||||
my $string;
|
||||
foreach $expr (1..$#-) {
|
||||
$string = $string . "${$expr} ";
|
||||
}
|
||||
my $postfunction = $post{$monit};
|
||||
&$postfunction($string);
|
||||
}
|
||||
else {
|
||||
doubleprint("0 \n");
|
||||
}
|
||||
}
|
||||
close(CACHE);
|
||||
foreach $monit (@monitored) {
|
||||
doubleprint("$monit" . ".value ");
|
||||
if ($lines[$linenum{$monit}] =~ /$regexp{$monit}/ ) {
|
||||
my $string;
|
||||
foreach $expr (1..$#-) {
|
||||
$string = $string . "${$expr} ";
|
||||
}
|
||||
my $postfunction = $post{$monit};
|
||||
&$postfunction($string);
|
||||
}
|
||||
else {
|
||||
doubleprint("0 \n");
|
||||
}
|
||||
}
|
||||
close(CACHE);
|
||||
}
|
||||
|
||||
sub doubleprint {
|
||||
print CACHE $_[0];
|
||||
print $_[0];
|
||||
print CACHE $_[0];
|
||||
print $_[0];
|
||||
}
|
||||
|
||||
sub postvoice {
|
||||
my @args = split(/ /, $_[0]);
|
||||
my $minutes = $args[0] * 60 + $args[1] + $args[2] / 60;
|
||||
doubleprint("$minutes \n");
|
||||
my @args = split(/ /, $_[0]);
|
||||
my $minutes = $args[0] * 60 + $args[1] + $args[2] / 60;
|
||||
doubleprint("$minutes \n");
|
||||
}
|
||||
|
||||
sub simplepost {
|
||||
my @args = split(/ /,$_[0]);
|
||||
doubleprint("$args[0] \n");
|
||||
my @args = split(/ /,$_[0]);
|
||||
doubleprint("$args[0] \n");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue