CUPS can simplify printer management in at least three ways:
- CUPS can make printer replacement transparent to the client.
- Multiple queues / driver defaults can be configured centrally.
- CUPS offers centralized accounting and supply billing.
With either CUPS alone (using IP printing) or Point'n'Print via SAMBA (which lets you push the driver to the client as well, but can be a pain when it doesn't just work), set up your print queues; use names like "First Floor Copier" rather than make and model. Install the printer to the workstations using a generic PostScript driver.
Now when you want to replace the printer, you just replace the driver in CUPS, and you're finished -- the clients still use the same queue with the generic driver.
If you're already set up for it, you can also use startup scripts to install the printers so you don't have to visit each client initially.
A VBScript to install a Point'n'Print printer on Windows would be something like:
oNet = WScript.CreateObject("WScript.Network")
On Error Resume Next ' Ignore if we're not on the LAN - important for laptops
oNet.AddWindowsPrinterConnection "\\sambaserver\MyPrinterQueue", "MyPrinterName"
OS X and Linux installation can be as simple as dropping a client.conf into the /etc/cups directory (this installs all CUPS printers; if you are with a large organization using a single CUPS server, this may not be desirable). In a large organization, keep a printers.conf file for each department, and drop it into /etc/cups.
If you have OS X laptops people take home with them, give them a "switch printers" script to add and remove the client.conf as needed; when at work, it installs the work printers, when at home, they have whatever they may have installed at home.
You can create simplex and duplex queues for each printer (and/or grayscale and color queues) if desired. Alternatively, a single queue per printer with defaults set to duplex and grayscale lowers the number of installed printers, and makes people specifically choose to spend more money.
Of course, all of this can be done at the client as well, but why do it more than once?
If your organization bills departments or users for their printing costs, you probably have someone in accounting logging into each printer, grabbing the data, and compiling a full printer usage list. CUPS has some capability for this and quota management built-in, and there are third party backends (such as Pykota) that offer a more full-featured accounting system.
Is there a way in CUPS to have windows and mac clients send the print job to the server, using a generic driver, and also select the destination printer?
There are tools that can automatically route print jobs based on printer availability / lowest cost / etc. (e.g., PaperCut), but nothing free or open source that I am aware of.