Code

Initial revision
[rrdtool-all.git] / contrib / add_ds / batch.pl
diff --git a/contrib/add_ds/batch.pl b/contrib/add_ds/batch.pl
new file mode 100755 (executable)
index 0000000..5fa6a33
--- /dev/null
@@ -0,0 +1,95 @@
+#! /usr/sepp/bin/perl
+
+# batch.pl, simple program to help add datasources to an existing RRD
+#   goes with add_ds.pl
+#
+#    Copyright (C) 2000 Selena M. Brewington
+#
+#    This program is free software; you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation; either version 2 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program; if not, write to the Free Software
+#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# 
+# for use with add_ds.pl script to add datasources to an RRD
+#
+# usage: ls -1 | ./batch.pl [-o] <# ds to add>
+#
+# -o will let you overwrite your rrds.  i don't recommend using this 
+# switch the first time you run this program.  If something
+# gets messed up, the original xml files will be in the xml
+# directory and you can run 'rrdtool restore' on all of them
+# uncomment the commented out lines below to make this work.
+#
+# also, you can change the name of the directory the XML is
+# getting dumped to, where your rrdtool binary is located, 
+# and where add_ds.pl is located.  the variables are listed 
+# below.
+#
+# This script could theoretically take fully-qualified pathnames
+# as input from STDIN rather than the output from ls -1. 
+#
+
+use strict;
+
+########### USER CONFIGURABLE SECTION #######################
+
+my $newdir = "xml";
+my $rrdtool = "/usr/local/rrdtool-1.0.30/bin/rrdtool";
+my $add_ds = "./add_ds.pl";  # path to add_ds.pl script
+
+########### END CONFIGURE SECTION ###########################
+
+
+my $ds = shift || die 'need number of datasources to add';
+
+my $overwrite = 0;
+
+if ($ds eq '-o') {
+  $overwrite = 1;
+  $ds = shift || die 'need number of datasources to add';
+} 
+
+if (! (-x $newdir)) {
+  `mkdir xml` || die "can't make directory xml";
+}
+
+while (<STDIN>) {
+
+  next if (! /rrd/);
+  chop;
+  my $file = $_;
+
+  $_ =~ s/rrd$/xml/;
+
+  open(FILE, ">$newdir/$_");
+
+  my @output = `$rrdtool dump $file`;
+  print FILE @output;
+
+  close(FILE);
+
+  open (FILE, ">$newdir/$_.2");
+
+  my @new = `cat $newdir/$_ | $add_ds $ds`; 
+
+  print FILE @new;
+
+  close (FILE);
+
+  system("$rrdtool restore $newdir/$_.2 $newdir/$file") == 0 
+    or die "rrdtool restore failed for $file";
+
+  if ($overwrite == 1) {
+    system("mv $newdir/$file $file") == 0
+      or die "can't overwrite $file";
+  }
+}