Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

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
}