CUPS: Advanced Network Printing
I've spent the past week developing an automated printer discovery and configuration solution that took me deep into the world of CUPS. This involved extensive use of the CUPS CLI, Perl, and raw socket programming.
The client has a mixture of different printer makes and models. Each of these printers could be locally attached to a workstation, sit behind a print server, or be directly attached to the network. Next, some of the printers are dedicated label printers, which should not accept a job from a user trying to print a spreadsheet. Finally, the solution needed to be supported on existing RH9 servers as well as SLES 11 servers and SLED 11 workstations.
The best thing about this project was that I learned a cool trick for sending PJL commands, over a socket, to discover the printer make and model. This was necessary because the SNMP CUPS backend could not detect printers behind a printer server and Okidata printers use HTML Frames and JavaScript in their management interface, which the CLI HTTP utilities couldn't handle.

