root / plugins / vdr / vdr_ @ eb100e33
Historique | Voir | Annoter | Télécharger (4,92 ko)
| 1 |
#!/usr/bin/perl -w |
|---|---|
| 2 |
|
| 3 |
# Version 1.2 |
| 4 |
# - kein div 0 Fehler mehr wenn der Host nicht zu erreichen ist |
| 5 |
# - Serien Timer werden nun seperat gezaehlt (anzahl pro Woche) |
| 6 |
# - im Namen kann munic conform der hostname mit angegeben werden: vdr_localhost vdr_192.168.0.2, ... (localhost ist default) |
| 7 |
# - Timer werden nur ignoriert wenn sie 0(inaktiv) als Status haben |
| 8 |
# - Erkennung der neuen Aufzeichnungen passte nicht mehr |
| 9 |
# |
| 10 |
# Version 1.1 |
| 11 |
# - laufende Timer zaehlen nun zu aktiven Timern. |
| 12 |
# - Ausgabe fuer Festplatteninformation |
| 13 |
# |
| 14 |
# Version 1.0 |
| 15 |
# - Release |
| 16 |
|
| 17 |
use strict; |
| 18 |
use diagnostics; |
| 19 |
|
| 20 |
$0 =~ /vdr_(.+)*$/; |
| 21 |
my $host = $1 || "localhost";; |
| 22 |
|
| 23 |
#print "Name: $0\nHost: $host\n"; |
| 24 |
my $SVDRPSENDPL="/usr/bin/svdrpsend -d $host"; |
| 25 |
|
| 26 |
sub ermittelnTimer; |
| 27 |
sub ermittelnAufnahmen; |
| 28 |
sub ermittelnPlatte; |
| 29 |
sub uhrzeit2min; |
| 30 |
|
| 31 |
if (($ARGV[0])&&($ARGV[0] eq "config")){
|
| 32 |
print "graph_title VDR Sensors ($host)\n"; |
| 33 |
# print "graph_args --upper-limit 50 -l 0\n"; |
| 34 |
print "graph_args -l 0\n"; |
| 35 |
print "graph_vlabel Anzahl\n"; |
| 36 |
print "graph_category tv\n"; |
| 37 |
print "graph_info Diese Graphen zeigen verschiedene Werte des VDR.\n"; |
| 38 |
|
| 39 |
print "timer.label Timer (Anzahl)\n"; |
| 40 |
print "timer.info Anzahl aller aktivierten Timer\n"; |
| 41 |
print "timer.draw LINE2\n"; |
| 42 |
|
| 43 |
print "timer_durchschnitt.label Timer Durchschnitt (Minuten)\n"; |
| 44 |
print "timer_durchschnitt.info Die durchschnittliche Dauer eines Timers\n"; |
| 45 |
print "timer_durchschnitt.draw LINE2\n"; |
| 46 |
|
| 47 |
print "serientimer.label Serien Timer (Anzahl)\n"; |
| 48 |
print "serientimer.info Anzahl aller aktivierten Serien Timer\n"; |
| 49 |
print "serientimer.draw LINE2\n"; |
| 50 |
|
| 51 |
print "serientimer_durchschnitt.label Serien Timer Durchschnitt (Minuten)\n"; |
| 52 |
print "serientimer_durchschnitt.info Die durchschnittliche Dauer eines Timers\n"; |
| 53 |
print "serientimer_durchschnitt.draw LINE2\n"; |
| 54 |
|
| 55 |
print "aufnahmen_gesehen.label Aufnahmen gesehen (Anzahl)\n"; |
| 56 |
print "aufnahmen_gesehen.info Aufnahmen die schon angeschaut wurden.\n"; |
| 57 |
print "aufnahmen_gesehen.draw LINE2\n"; |
| 58 |
|
| 59 |
print "aufnahmen_neu.label Aufnahmen ungesehen (Anzahl)\n"; |
| 60 |
print "aufnahmen_neu.info Aufnahmen die noch nicht angeschaut wurden.\n"; |
| 61 |
print "aufnahmen_neu.draw LINE2\n"; |
| 62 |
|
| 63 |
print "platte.label Belegung VDR-Platten (%)\n"; |
| 64 |
print "platte.info Angabe, wieviel der von VDR beschreibbaren Festplatten belegt ist.\n"; |
| 65 |
print "platte.draw LINE2\n"; |
| 66 |
|
| 67 |
exit 0 |
| 68 |
} |
| 69 |
|
| 70 |
ermittelnTimer(); |
| 71 |
ermittelnPlatte(); |
| 72 |
ermittelnAufnahmen(); |
| 73 |
|
| 74 |
sub ermittelnAufnahmen(){
|
| 75 |
my $zeile; |
| 76 |
my $anzahlAufnahmenNeu=0; |
| 77 |
my $anzahlAufnahmenGesehen=0; |
| 78 |
open BEFEHL,"$SVDRPSENDPL lstr|"; |
| 79 |
while($zeile=<BEFEHL>){
|
| 80 |
if ($zeile=~/^250.* .* [.^*]*\ /){
|
| 81 |
$anzahlAufnahmenNeu++; |
| 82 |
} else {
|
| 83 |
$anzahlAufnahmenGesehen++; |
| 84 |
} |
| 85 |
} |
| 86 |
print "aufnahmen_gesehen.value ".$anzahlAufnahmenGesehen."\n"; |
| 87 |
print "aufnahmen_neu.value ".$anzahlAufnahmenNeu."\n"; |
| 88 |
} |
| 89 |
|
| 90 |
sub ermittelnPlatte(){
|
| 91 |
my $zeile; |
| 92 |
my $muell; |
| 93 |
my $platteProzent=0; |
| 94 |
open BEFEHL,"$SVDRPSENDPL stat disk|"; |
| 95 |
while($zeile=<BEFEHL>){
|
| 96 |
if ($zeile=~/^250.*/){
|
| 97 |
($muell,$muell,$muell,$platteProzent)=split(/ /,$zeile,4); |
| 98 |
$platteProzent=~s/%//g; |
| 99 |
$platteProzent=~s/ //g; |
| 100 |
$platteProzent=~s/\n//g; |
| 101 |
$platteProzent=~s/\r//g; |
| 102 |
#print $zeile; |
| 103 |
} |
| 104 |
} |
| 105 |
print "platte.value ".$platteProzent."\n"; |
| 106 |
} |
| 107 |
|
| 108 |
sub ermittelnTimer(){
|
| 109 |
my $zeile; |
| 110 |
my $anzahl; |
| 111 |
my $anzahlTimer=0; |
| 112 |
my $anzahlSerienTimer=0; |
| 113 |
my $anzahlMinuten=0; |
| 114 |
my $anzahlSerienMinuten=0; |
| 115 |
my $start; |
| 116 |
my $ende; |
| 117 |
my $dauer; |
| 118 |
my $muell; |
| 119 |
|
| 120 |
open BEFEHL,"$SVDRPSENDPL lstt|"; |
| 121 |
while($zeile=<BEFEHL>){
|
| 122 |
if ($zeile=~/^250.[0-9]* [1-9]*/){
|
| 123 |
($muell,$muell,$anzahl,$start,$ende,$muell)=split(/:/,$zeile,6); |
| 124 |
#print $zeile; |
| 125 |
$anzahl =~ s/\-//g; |
| 126 |
#ermittle timerdauer |
| 127 |
$start=uhrzeit2min($start); |
| 128 |
$ende=uhrzeit2min($ende); |
| 129 |
if ($start<$ende){
|
| 130 |
$dauer=$ende-$start; |
| 131 |
}else{
|
| 132 |
$dauer=1440-$start; |
| 133 |
$dauer=$dauer+$ende; |
| 134 |
} |
| 135 |
|
| 136 |
if (length($anzahl) && $anzahl =~ /\D/){
|
| 137 |
#print "Serie"; |
| 138 |
$anzahlSerienTimer+=length($anzahl); |
| 139 |
$anzahlSerienMinuten+=$dauer*length($anzahl); |
| 140 |
} else {
|
| 141 |
#print "keine Serie"; |
| 142 |
$anzahlTimer++; |
| 143 |
$anzahlMinuten+=$dauer; |
| 144 |
} |
| 145 |
|
| 146 |
#print "$start-$ende=$dauer\n"; |
| 147 |
} |
| 148 |
} |
| 149 |
print "timer.value ".$anzahlTimer."\n"; |
| 150 |
printf $anzahlTimer ? ("timer_durchschnitt.value %d\n",($anzahlMinuten/$anzahlTimer)) : "timer_durchschnitt.value 0\n";
|
| 151 |
|
| 152 |
print "serientimer.value ".$anzahlSerienTimer."\n"; |
| 153 |
printf $anzahlSerienTimer ? ("serientimer_durchschnitt.value %d\n",($anzahlSerienMinuten/$anzahlSerienTimer)) : "serientimer_durchschnitt.value 0\n";
|
| 154 |
} |
| 155 |
|
| 156 |
sub uhrzeit2min(){
|
| 157 |
my $zeit=$_[0]; |
| 158 |
$zeit=$zeit%100+($zeit-$zeit%100)/100*60; |
| 159 |
return $zeit; |
| 160 |
} |
