Projet

Général

Profil

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

root / plugins / ftp / pureftpd_traffic @ e5ce7492

Historique | Voir | Annoter | Télécharger (2,18 ko)

1
#!/usr/bin/perl
2

    
3
use HTTP::Date;
4
use Date::Manip;
5

    
6
 $logfile="/var/log/pure-ftpd/transfer.log";
7
 $ts="/tmp/munin_pureftpd_traffic_plugin_ts";
8

    
9
if ($ARGV[0] eq "test") {
10
    $handle = open LOG,"<$logfile";
11
    if(!$handle) {
12
     print "Can't open logfile!\n";
13
     exit -1;
14
    }
15
    $handle = open TS,"<$ts";
16
    if(!$handle) {
17
     print "Can't open lockfile!\n";
18
     exit -1;
19
    }
20
    print "OK\n";
21
    exit 0;
22
}
23

    
24
if ($ARGV[0] eq "config") {
25
 $out.="graph_title pureftpd traffic
26
graph_category PureFTPd
27
graph_info This graph shows pureftpd traffic.
28
graph_vlabel Bytes
29
get.label Get
30
get.type COUNTER
31
get.draw LINE1
32
get.colour ff0000
33
put.label Put
34
put.type COUNTER
35
put.draw LINE1
36
put.colour 00ff00
37
mti.label MTI
38
mti.type COUNTER
39
mti.draw LINE1
40
mti.colour 0000ff
41
dsm.label DSM
42
dsm.type COUNTER
43
dsm.draw LINE1
44
dsm.colour 009999
45
";
46
 print $out;
47
 exit 0;
48
}
49

    
50
if (!(-e $logfile)) {
51
  die "No transfer.log available!";
52
 }
53
 if (!(-e $ts)) {
54
  open LOG, "<$logfile" or print "Can't open logfile!\n";
55
  my $last_line;
56
  while(<LOG>) {
57
   $last_line = $_ if eof; 
58
  }
59
  close LOG;
60
  @em = split(/ /,$last_line);
61
  $curr_ts = "$em[3] $em[4]";
62
  $curr_ts =~ s/\[//g;
63
  $curr_ts =~ s/\]//g;
64

    
65
  open TS, ">$ts";
66
  print TS $curr_ts;
67
  close TS;
68
  $last_ts=$curr_ts;
69
 } else {
70
  open TS, "<$ts";
71
  @l=<TS>;
72
  close TS;
73
  $last_ts=$l[0];
74
 }
75

    
76
 my $get=0,
77
    $put=0,
78
    $mti=0,
79
    $dsm=0;
80
       
81
 open LOG, "<$logfile";
82
 @log=<LOG>;
83
 foreach $row (@log) {
84
   @parts=split(/ /,$row);
85
   $curr_ts = "$parts[3] $parts[4]";
86
   $curr_ts =~ s/\[//g;
87
   $curr_ts =~ s/\]//g; 
88

    
89
   if ( Date_Cmp($curr_ts,$last_ts) > 0 ) {
90
      if ( $parts[5]=~ /GET/ ) {
91
          $get+=int($parts[8]);
92
          if ($parts[2] eq "mti") {
93
	      $mti+=int($parts[8]);
94
	     }	 
95
          if ($parts[2] eq "dsm") {
96
	      $dsm+=int($parts[8]);
97
	     }	 
98
         }
99
      if ( $parts[5]=~ /PUT/ ) {
100
          $put-=int($parts[8]);
101
          if ($parts[2] eq "mti") {
102
	      $mti-=int($parts[8]);
103
	     }	 
104
          if ($parts[2] eq "dsm") {
105
	      $dsm-=int($parts[8]);
106
	     }	 
107
         }
108
     }
109
 }
110

    
111
 open TS, ">$ts";
112
 print TS $curr_ts;
113
 close TS;
114
 close LOG;
115
 $out="get.value $get
116
put.value $put
117
mti.value $mti
118
dsm.value $dsm
119
";
120
 print $out;
121
 exit (0);
122

    
123
__END__