X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/upsgraph/blobdiff_plain/e18c93b30560e68d91bd34f298dc9d8903929b97..af4abf85a0f06568e1bed0cd2e3b36363b0b37ed:/upsgraph.pl diff --git a/upsgraph.pl b/upsgraph.pl index 745a44c..bef10a5 100755 --- a/upsgraph.pl +++ b/upsgraph.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -w -if (@ARGV != 3) { - print STDERR "Syntax: ${0} host /path/to/file.rrd /output/directory/\n"; +if ((@ARGV != 3) && (@ARGV != 4)) { + print STDERR "Syntax: ${0} host /path/to/file.rrd /output/directory/ [uid]\n"; exit(1); } @@ -97,6 +97,16 @@ my $vars = { use Net::SNMP; +if ($> == 0) { + if (@ARGV != 4) { + print STDERR "Running as root, please provide UID as 4th argument!\n"; + exit(1); + } + + print "Running as root, switching to ".$ARGV[3]."\n"; + $< = $> = $ARGV[3]; +} + if (! -e "${rrdfile}") { my $cmd = "rrdtool create \"${rrdfile}\" "; foreach my $var (@fields) { @@ -110,6 +120,12 @@ if (! -e "${rrdfile}") { print `${cmd}`; } +my $child = fork(); + +die "fork failed!" if (!defined($child)); + +exit 0 if ($child != 0); + while(1) { ($session,$error) = Net::SNMP->session(Hostname => $host, Community => $community); @@ -137,7 +153,6 @@ while(1) { if (!(defined($vars->{$var}->{'value'}))) { $vars->{$var}->{'value'} = 'U'; } - print $vars->{$var}->{'name'}.": ".$vars->{$var}->{'value'}."\n"; $cmd .= ":" . $vars->{$var}->{'value'}; } $cmd .= "\""; @@ -164,6 +179,7 @@ while(1) { print HTML "\n"; print HTML "
Generated on: " . localtime(time()); + print HTML ' by upsgraph.'; close(HTML);