#!/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);
}
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) {
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);
if (!(defined($vars->{$var}->{'value'}))) {
$vars->{$var}->{'value'} = 'U';
}
- print $vars->{$var}->{'name'}.": ".$vars->{$var}->{'value'}."\n";
$cmd .= ":" . $vars->{$var}->{'value'};
}
$cmd .= "\"";
print HTML "</body></html>\n";
print HTML "<br>Generated on: " . localtime(time());
+ print HTML ' by <a href="http://git.zerfleddert.de/cgi-bin/gitweb.cgi/upsgraph">upsgraph</a>.';
close(HTML);