#! /usr/bin/python """ Name : lpq.py Author : David Boddie Created : Tue 08th August 2000 Last modified : Thu 06th September 2001 Purpose : Print information on the line printer queue. """ import os, socket, string, sys def find_switch(l, switch): j = -1 for i in range(0, len(l)): if l[i] == switch: if i+1 < len(l): return (l[i], l[i+1]) else: return (l[i], None) elif l[i][:len(switch)] == switch: return l[i][:len(switch)], l[i][len(switch):] return (None, None) def remove_switch(l, switch, args = 0): argv = [] i = 0 while i < len(l): if l[i] == switch: i = i + args + 1 elif l[i][:len(switch)] == switch: i = i + args else: argv.append(l[i]) i = i + 1 return argv def getenv(var): if sys.platform == 'RISCOS': return os.getenv(var) else: try: return os.environ[var] except KeyError: return None # Main if len(sys.argv) == 0: print 'lpq [-l] [-Pprinter] [user]' sys.exit(0) argv = sys.argv[1:] l, full_info = find_switch(argv, "-l") P, printer = find_switch(argv, "-P") # Remove the switches and arguments from the list argv = remove_switch(argv, "-P", 1) argv = remove_switch(argv, "-l", 0) # What remains must be the user if len(argv) > 0: user = argv[-1] else: user = "" if printer == None: printer = getenv('PRINTER') if printer == None: print 'No default printer specified: use system variable PRINTER or the -P switch' sys.exit(0) printer = string.strip(printer) server = getenv('PRINTER_SERVER') if server == None: print 'No printer server specified: use system variable PRINTER_SERVER' sys.exit(0) server = string.strip(server) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #bound = 0 #for port in range(721,732): # # try: # s.bind((socket.gethostname(), port)) # bound = 1 # break # except: # pass # #if bound == 0: # print "Could not bind socket to port." # sys.exit(0) s.connect((server, 515)) if l == None: send_string = "\003"+printer+" "+user+"\012" else: send_string = "\004"+printer+" "+user+"\012" s.send(send_string) data = s.recv(1024) s.close() lines = string.split(data, "\012") for i in lines: print string.expandtabs(i, 12) sys.exit(0)