source: client/bin/gbq

debianmacno-cups
Last change on this file was fc8707b, checked in by Jessica B. Hamrick <jhamrick@…>, 14 years ago
Add '-hhelp' flags to all the client scripts
Add a '-ddryrun' option to gbr, to just list what would be done instead of doing it
  • Property mode set to 100755
File size: 2.6 KB
Line 
1#!/usr/bin/perl
2
3# This script was largely written by Jessica Hamrick (jhamrick), with
4# help from Kyle Brogle (broglek)
5
6use strict;
7use warnings;
8
9use Net::CUPS;
10use Net::CUPS::Destination;
11use Getopt::Long;
12
13# usage
14my $usage = <<USAGE;
15Usage: gbq [options] [-q QUEUE]
16
17        -q, --queue             Specify a queue other than the default
18        -h, --help              Print this message
19USAGE
20
21# initialize the variables for the options
22my $q = "";
23my $help = 0;
24
25# parse the options
26GetOptions ('q|queue=s' => \$q,
27            'h|help' => \$help);
28
29# if the -h flag was passed, then print the usage and exit
30if ($help) {
31    print $usage;
32    exit 0;
33}
34
35# if the -q option is not specified, then assume we're using the
36# default queue
37if (!$q) {
38    $q = "DEFAULT";
39}
40
41# set configuration path, and complain if it doesn't exist
42my $configpath = "$ENV{'HOME'}/.gutenbach/$q";
43if (! -e $configpath) {
44    print "Queue '$q' does not exist!  Did you forget to add it with 'gutenbach-client-config'?\n";
45    exit 1;
46}
47
48# initialize the host and queue variables: host holds the address for
49# the machine on which the remote queue runs, and queue holds the name
50# of the printer
51my ($host, $queue);
52
53# load the configuration file (this will set $host and $queue)
54if (-r $configpath) {
55    local $/;
56    my $fh;
57    open $fh, $configpath;
58    eval <$fh>;
59}
60
61# initialize a new CUPS session
62my $cups = Net::CUPS->new();
63# set the server to the one specified in the config file
64$cups->setServer("$host");
65# set the printer name to the one specified in the config file
66my $printer = $cups->getDestination("$queue");
67
68# if $printer is not defined, then throw an error
69unless( $printer){
70    print "Cannot access queue $q...do you have network connectivity and permission to view the queue?\n";
71    exit 1;
72}
73
74# print pretty headings and stuff
75print "Queue listing for queue '$queue' on '$host'\n\n";
76printf ("%-8s%-15s%s\n","Job","Owner","Title");
77print "-"x70 . "\n";
78
79# get the list of jobs from the printer
80my @jobs = $printer->getJobs(0, 0);
81
82# initialize the job reference and job id variables
83my ($job_ref, $jobid);
84
85# for each job in the list of jobs:
86foreach $jobid(@jobs) 
87{       
88    # get the reference to the job (so we can get various related
89    # variables)
90    $job_ref = $printer->getJob($jobid);
91
92    # get the id of the job
93    my $id = $job_ref->{'id'};
94    # get the user who printed the job
95    my $user = $job_ref->{'user'};
96    # get the title of the job
97    my $title = $job_ref->{'title'};
98   
99    # print the job information to the screen
100    printf ("%-8s%-15s%s\n","$id",substr("$user",0,15),substr("$title",0,47));
101}
Note: See TracBrowser for help on using the repository browser.