Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- use strict;
- use diagnostics;
- use POSIX qw(setsid);
- 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){
- fork && exit;
- 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`;
- my $jobcount = scalar @jobs;
- if ($jobcount > 0){
- my $popped = pop @ledstate;
- unshift @ledstate, $popped;
- }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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement