#! /usr/bin/perl -wT
# $Id: karlnet-reboot.pl,v 1.3 2007/01/15 14:39:27 rupee Exp rupee $
# (c) 2007 by r DOT roesler DASH schmidt@glutam.at
#
use Net::SNMP;


sub usage() {
	print STDERR "$0 [ip-address] [snmp-write-community]\n";
	exit 255;
}

if (@ARGV < 2) { usage() }

my ($session, $error) = Net::SNMP->session(
	-hostname		=>	shift
,	-community	=>	shift
,	-port				=>	shift || 161
);

if (!defined($session))
{
	printf("error while SNMP connecting: %s.\n", $error);
	exit 1;
}

my $sysUptime = '1.3.6.1.2.1.1.3.0';
my $sysReboot = '1.3.6.1.4.1.762.2.1.6.0';

my $result = $session->get_request(
	-varbindlist	=>	[$sysUptime]
);

if (!defined($result))
{
	printf("error while retrieving uptime from device: %s.\n", $session->error);
	$session->close;
	exit 1;
}

printf("%s uptime: [%s]\n", $session->hostname, $result->{$sysUptime});

$result = $session->set_request(
	-varbindlist	=>	[$sysReboot, TIMETICKS, 1]
);

if (!defined($result))
{
	printf("error powercycling device: %s.\n", $session->error);
	$session->close;
	exit 1;
} else {
	printf("powercycling device %s: [%s]\n", $session->hostname, $result->{$sysReboot});
}

$session->close;
exit 0;
