#!/usr/bin/perl
use POSIX;

($hour, $min)=@ARGV;

if ($#ARGV < 1) {
        print "Usage:\n";
        print "$0 [hour] [min]\n";
        exit(1);
}

$users = 0;
$date = `/bin/date +"%H:%M"`;
($h_sys,$m_sys) = split (":",$date);

@loged=`/usr/bin/w -h`;
#print @loged;
chomp(@loged);

if ($hour > 0){
	$er = "m\$";
}else {
	$er = "[0-9]\$";
}

for ($i=0; $i <= $#loged; $i++){
	($user, $tty, $from ,$login ,$idle , $jcpu, $pcpu, @what) = split(" ",$loged[$i]);
	if ( $idle =~ /$er/){
#		print "Idle: $idle\n";

		if ($hour <= 0){
			$h_user = 0;
			($m_user, $s_user) = split(":",$idle);
#			printf ("User: %s ilde a %02d:%02d:%02d\n", $user, $h_user, $m_user, $s_user);
		}else {
			$s_user = 0;
			($h_user, $m_user) = split(":",$idle);
			$m_user = substr($m_user,0,2);
#			printf ("User: %s ilde a %02d:%02d:%02d\n", $user, $h_user, $m_user, $s_user);
		}

		if (($h_user >= $hour)&&($m_user > $min)){
			$users++;
			$return .= " $user($tty),";
		}
	}
}

$return =~ s/,$//g;

if ($users > 0){
	printf ("Critical - %d idle users more than %02d:%02d hs:%s|users=%d;;;;\n", $users, $hour, $min, $return, $users);
	exit (2);
}else {
	printf ("Ok - %d idle users more than %02d:%02d hs:%s|users=%d;;;;\n", $users, $hour, $min , $return, $users);
	exit (0);
}
