161 lines
4.9 KiB
Plaintext
161 lines
4.9 KiB
Plaintext
|
#!/usr/bin/perl -w
|
||
|
|
||
|
# Version 1.2
|
||
|
# - kein div 0 Fehler mehr wenn der Host nicht zu erreichen ist
|
||
|
# - Serien Timer werden nun seperat gezaehlt (anzahl pro Woche)
|
||
|
# - im Namen kann munic conform der hostname mit angegeben werden: vdr_localhost vdr_192.168.0.2, ... (localhost ist default)
|
||
|
# - Timer werden nur ignoriert wenn sie 0(inaktiv) als Status haben
|
||
|
# - Erkennung der neuen Aufzeichnungen passte nicht mehr
|
||
|
#
|
||
|
# Version 1.1
|
||
|
# - laufende Timer zaehlen nun zu aktiven Timern.
|
||
|
# - Ausgabe fuer Festplatteninformation
|
||
|
#
|
||
|
# Version 1.0
|
||
|
# - Release
|
||
|
|
||
|
use strict;
|
||
|
use diagnostics;
|
||
|
|
||
|
$0 =~ /vdr_(.+)*$/;
|
||
|
my $host = $1 || "localhost";;
|
||
|
|
||
|
#print "Name: $0\nHost: $host\n";
|
||
|
my $SVDRPSENDPL="/usr/bin/svdrpsend.pl -d $host";
|
||
|
|
||
|
sub ermittelnTimer;
|
||
|
sub ermittelnAufnahmen;
|
||
|
sub ermittelnPlatte;
|
||
|
sub uhrzeit2min;
|
||
|
|
||
|
if (($ARGV[0])&&($ARGV[0] eq "config")){
|
||
|
print "graph_title VDR Sensors ($host)\n";
|
||
|
# print "graph_args --upper-limit 50 -l 0\n";
|
||
|
print "graph_args -l 0\n";
|
||
|
print "graph_vlabel Anzahl\n";
|
||
|
print "graph_category VDR\n";
|
||
|
print "graph_info Diese Graphen zeigen verschiedene Werte des VDR.\n";
|
||
|
|
||
|
print "timer.label Timer (Anzahl)\n";
|
||
|
print "timer.info Anzahl aller aktivierten Timer\n";
|
||
|
print "timer.draw LINE2\n";
|
||
|
|
||
|
print "timer_durchschnitt.label Timer Durchschnitt (Minuten)\n";
|
||
|
print "timer_durchschnitt.info Die durchschnittliche Dauer eines Timers\n";
|
||
|
print "timer_durchschnitt.draw LINE2\n";
|
||
|
|
||
|
print "serientimer.label Serien Timer (Anzahl)\n";
|
||
|
print "serientimer.info Anzahl aller aktivierten Serien Timer\n";
|
||
|
print "serientimer.draw LINE2\n";
|
||
|
|
||
|
print "serientimer_durchschnitt.label Serien Timer Durchschnitt (Minuten)\n";
|
||
|
print "serientimer_durchschnitt.info Die durchschnittliche Dauer eines Timers\n";
|
||
|
print "serientimer_durchschnitt.draw LINE2\n";
|
||
|
|
||
|
print "aufnahmen_gesehen.label Aufnahmen gesehen (Anzahl)\n";
|
||
|
print "aufnahmen_gesehen.info Aufnahmen die schon angeschaut wurden.\n";
|
||
|
print "aufnahmen_gesehen.draw LINE2\n";
|
||
|
|
||
|
print "aufnahmen_neu.label Aufnahmen ungesehen (Anzahl)\n";
|
||
|
print "aufnahmen_neu.info Aufnahmen die noch nicht angeschaut wurden.\n";
|
||
|
print "aufnahmen_neu.draw LINE2\n";
|
||
|
|
||
|
print "platte.label Belegung VDR-Platten (%)\n";
|
||
|
print "platte.info Angabe, wieviel der von VDR beschreibbaren Festplatten belegt ist.\n";
|
||
|
print "platte.draw LINE2\n";
|
||
|
|
||
|
exit 0
|
||
|
}
|
||
|
|
||
|
ermittelnTimer();
|
||
|
ermittelnPlatte();
|
||
|
ermittelnAufnahmen();
|
||
|
|
||
|
sub ermittelnAufnahmen(){
|
||
|
my $zeile;
|
||
|
my $anzahlAufnahmenNeu=0;
|
||
|
my $anzahlAufnahmenGesehen=0;
|
||
|
open BEFEHL,"$SVDRPSENDPL lstr|";
|
||
|
while($zeile=<BEFEHL>){
|
||
|
if ($zeile=~/^250.* .* [.^*]*\ /){
|
||
|
$anzahlAufnahmenNeu++;
|
||
|
} else {
|
||
|
$anzahlAufnahmenGesehen++;
|
||
|
}
|
||
|
}
|
||
|
print "aufnahmen_gesehen.value ".$anzahlAufnahmenGesehen."\n";
|
||
|
print "aufnahmen_neu.value ".$anzahlAufnahmenNeu."\n";
|
||
|
}
|
||
|
|
||
|
sub ermittelnPlatte(){
|
||
|
my $zeile;
|
||
|
my $muell;
|
||
|
my $platteProzent=0;
|
||
|
open BEFEHL,"$SVDRPSENDPL stat disk|";
|
||
|
while($zeile=<BEFEHL>){
|
||
|
if ($zeile=~/^250.*/){
|
||
|
($muell,$muell,$muell,$platteProzent)=split(/ /,$zeile,4);
|
||
|
$platteProzent=~s/%//g;
|
||
|
$platteProzent=~s/ //g;
|
||
|
$platteProzent=~s/\n//g;
|
||
|
$platteProzent=~s/\r//g;
|
||
|
#print $zeile;
|
||
|
}
|
||
|
}
|
||
|
print "platte.value ".$platteProzent."\n";
|
||
|
}
|
||
|
|
||
|
sub ermittelnTimer(){
|
||
|
my $zeile;
|
||
|
my $anzahl;
|
||
|
my $anzahlTimer=0;
|
||
|
my $anzahlSerienTimer=0;
|
||
|
my $anzahlMinuten=0;
|
||
|
my $anzahlSerienMinuten=0;
|
||
|
my $start;
|
||
|
my $ende;
|
||
|
my $dauer;
|
||
|
my $muell;
|
||
|
|
||
|
open BEFEHL,"$SVDRPSENDPL lstt|";
|
||
|
while($zeile=<BEFEHL>){
|
||
|
if ($zeile=~/^250.[0-9]* [1-9]*/){
|
||
|
($muell,$muell,$anzahl,$start,$ende,$muell)=split(/:/,$zeile,6);
|
||
|
#print $zeile;
|
||
|
$anzahl =~ s/\-//g;
|
||
|
#ermittle timerdauer
|
||
|
$start=uhrzeit2min($start);
|
||
|
$ende=uhrzeit2min($ende);
|
||
|
if ($start<$ende){
|
||
|
$dauer=$ende-$start;
|
||
|
}else{
|
||
|
$dauer=1440-$start;
|
||
|
$dauer=$dauer+$ende;
|
||
|
}
|
||
|
|
||
|
if (length($anzahl) && $anzahl =~ /\D/){
|
||
|
#print "Serie";
|
||
|
$anzahlSerienTimer+=length($anzahl);
|
||
|
$anzahlSerienMinuten+=$dauer*length($anzahl);
|
||
|
} else {
|
||
|
#print "keine Serie";
|
||
|
$anzahlTimer++;
|
||
|
$anzahlMinuten+=$dauer;
|
||
|
}
|
||
|
|
||
|
#print "$start-$ende=$dauer\n";
|
||
|
}
|
||
|
}
|
||
|
print "timer.value ".$anzahlTimer."\n";
|
||
|
printf $anzahlTimer ? ("timer_durchschnitt.value %d\n",($anzahlMinuten/$anzahlTimer)) : "timer_durchschnitt.value 0\n";
|
||
|
|
||
|
print "serientimer.value ".$anzahlSerienTimer."\n";
|
||
|
printf $anzahlSerienTimer ? ("serientimer_durchschnitt.value %d\n",($anzahlSerienMinuten/$anzahlSerienTimer)) : "serientimer_durchschnitt.value 0\n";
|
||
|
}
|
||
|
|
||
|
sub uhrzeit2min(){
|
||
|
my $zeit=$_[0];
|
||
|
$zeit=$zeit%100+($zeit-$zeit%100)/100*60;
|
||
|
return $zeit;
|
||
|
}
|