]> git.zerfleddert.de Git - upsgraph/blame - mvrrd.pl
Added script for moving data from one rrd file to another one
[upsgraph] / mvrrd.pl
CommitLineData
cc12f2c6
BO
1#!/usr/bin/perl
2
3use strict;
4use RRDs;
5
6sub usage {
7 print("usage: mvrrd.pl src.rrd dst.rrd start end\n");
8}
9
10usage() if scalar(@ARGV) != 4;
11
12my $src = @ARGV[0];
13my $dst = @ARGV[1];
14my $start = $ARGV[2];
15my $end = $ARGV[3];
16
17sub RRDupdate {
18 my $time = shift;
19 my $val = shift;
20
21 my @arg = ();
22
23 push @arg, $dst;
24 push @arg, "$time:$val";
25 RRDs::update(@arg);
26 my $error = RRDs::error;
27 die "RRD error: $error\n" if $error;
28}
29
30my @arg = ();
31push @arg, "$src";
32push @arg, "AVERAGE";
33push @arg, "--start", $start;
34push @arg, "--end", $end;
35
36my ($dataStart,$step,$names,$data) = RRDs::fetch(@arg);
37my $error = RRDs::error;
38die "RRD error: $error\n" if $error;
39print "Start: ", scalar localtime($dataStart), " ($dataStart)\n";
40print "Step size: $step seconds\n";
41print "DS names: ", join (", ", @$names)."\n";
42print "Data points: ", $#$data + 1, "\n";
43print "Data:\n";
44for my $line (@$data) {
45# print " ", scalar localtime($dataStart), " ($dataStart) ";
46 my ($sec, $min, $hour, $mday, $mon, $year) = localtime($dataStart);
47 my $isoDate = sprintf("%04d%02d%02d", $year + 1900, $mon + 1, $mday);
48 for my $val (@$line) {
49# printf "%f ", $val;
50 $val = 'U' if !defined $val;
51# print "val: $val @ time $isoDate";
52# print " ... Updating dst";
53 RRDupdate($dataStart, $val);
54 }
55 $dataStart += $step;
56# print "\n";
57}
Impressum, Datenschutz