binblog
By: a guest | Oct 4th, 2008 | Syntax:
Perl | Size: 1.25 KB | Hits: 203 | Expires: Never
#!/usr/bin/perl -w
use strict;
use diagnostics;
use Time
::HiRes qw(usleep
);
use Data::Dumper;
my $lpstat = "/usr/bin/lpstat";
my $ledbin = "/usr/local/sbin/led";
my @ledidle = ("on", "off", "off");
my @ledstate = @ledidle;
my @ledsaved;
if (1){
open STDIN, "/dev/null" or die "STDIN </dev/null: $!\n";
open STDOUT, ">/dev/null" or die "STDOUT >/dev/null: $!\n";
open STDERR, ">/dev/null" or die "STDERR >/dev/null: $!\n";
setsid();
}
my $killed = 0;
$SIG{TERM} = sub { $killed = 1; };
$SIG{INT} = sub { $killed = 1; };
while (1){
my @jobs = `$lpstat -o`;
if ($jobcount > 0){
my $popped = pop @ledstate;
}else{
@ledstate = @ledidle;
}
if ($killed){
@ledstate = @ledidle;
}
unless ("@ledstate" eq "@ledsaved"){
system("$ledbin 1 $ledstate[0]");
system("$ledbin 2 $ledstate[1]");
system("$ledbin 3 $ledstate[2]");
@ledsaved = @ledstate;
}
last if $killed;
usleep 333333;
}