As a NetWare admin, I'm sure this happens to you several times a week: A user walks into your office with a mangled printout, urgently needing the file reprinted because he or she didn’t save the file. How do you handle print jobs that have already completed but need to be reprinted without the original source files? Start by being thankful for your decision to run NetWare. Continue by reading this Daily Feature.
The procedure I describe here will not work with Novell Distributed Print Services (NDPS). NDPS attempts to send print jobs from the client PC directly to the printer. If your printer uses NDPS, the print jobs never touch the server’s disk (most times) and they can't be recovered. Call me old-fashioned, but I still prefer to use print queues.
Finding out which queue serviced the print job
To resuscitate such seemingly dead print jobs, begin by asking the user to which printer he or she attempted to print. If you’re running NetWare 4.x, you can then start PConsole by running PCONSOLE.EXE in your server’s SYS:\PUBLIC to find out what server controls the print queue. In PConsole, highlight Print Queues in the Available Options menu and press [Enter]. When the Print Queues menu appears, find the name of the queue that feeds the printer to which the user attempted to print, highlight it, and press [Enter]. You’ll then see the Print Queue Information screen. Select Information and press [Enter]. From the Information screen, shown in Figure A, note the following information:
- Object ID—This field represents the print object ID. You’ll use this number to find the directory that contains the print queue.
- NetWare Server—This field shows the name of the server that’s servicing the print queue. It’s also the server that contains the volume with the print queue directory.
- Print Queue Volume—This field shows the volume on which the print queue directory resides.
|Use PConsole to get the object name of the print queue.|
Other ways to find the file info for your print queue
If you’re running NetWare 5.x, you can’t use the PConsole utility, because Novell dropped PConsole when it shipped NetWare 5.0. You can copy the PConsole executables to your NetWare 5.x servers from a NetWare 4.x server. However, doing so is beyond the scope of this Daily Feature, and you may not have a NetWare 4.x server handy.
In that case, you can get the information you need from NetWare Administrator. Start NetWare Administrator and double-click the icon for the name of the printer to which the user attempted to print. When the printer's Properties page appears, click Assignments to find out the name of the queue to which the printer is assigned and close the Properties page when you've finished.
Next, double-click the icon for the name of the queue you just found. On the first page of the Queue Properties page, you’ll see the Volume Name field. Make note of the volume name. You’ll need this to know where to go in Filer to restore the print job.
A problem with using NetWare Administrator to locate the print file is that it doesn’t show you the file directory that the queue uses on the server’s volumes to store the file. This isn’t a problem if you have only a few printers on your network. However, if you have many printers serviced by the same server volume, it may take you awhile to figure out which directory is the correct one.
There’s one other way you can discover the file information for the print queue: Use the Nlist command. Drop to a command prompt and change directories to your server’s Public folder. At the Public prompt, type the following:
Nlist “Print Queue”=queuename /d
and press [Enter]. Nlist will display all of the information associated with the print queue on your network. Make note of the Queue Directory line associated with the queue name. You’ll need to know that to use Filer.
Using Filer to bring back the print job
Once you've obtained the name of the volume that stores information for the queue, you can use the Filer utility to recover the print jobs. Open a command prompt, change to the server's volumes, and then change directories into the QUEUE directory. When you display a directory of the QUEUE directory, you’ll see several subdirectories with .QDR extensions. These are the directories that store print jobs while they’re printing. Next, type the following:
where print_queue_object_id refers to the Print Object ID information you found in PConsole and the name of the directory you discovered using the Nlist command, and then press [Enter].
Then, start the Filer utility by typing filer at the command prompt and pressing [Enter]. When Filer starts, select Salvage Deleted Files from the Available Options menu. You’ll then see the Salvage Files menu. Choose View/Recover Deleted Files. Press [Enter] when it displays the asterisk in the Erased File Name Pattern To Match menu in order to list all items.
You should see a huge list of items in the Salvageable Items menu. Press the [F3] key to sort the list by deletion date. All of the most recently printed items will be at the top of the list. Press [Enter] on each entry and it will show the name of the user who submitted the print job and the time that the job was serviced (deleted).
Don’t worry if a dialog box appears asking you whether or not you want to recover the file. Just press [Esc] if this isn’t the right file and go to the next one on the list. Once you've found the print job to be reprinted, press [Enter] on Yes in the Recover This File? menu.
The Filer application will tell you to choose a different name for the file. Give it a name that relates to the user who needs the file, making sure to follow the 8.3 naming convention, and then press [Enter].
The file is recovered. Now what?
Once you’ve recovered the print file, you can reprint it. To do so, exit the Filer application. While still at the command prompt, display a directory listing by typing DIR and pressing [Enter]. You’ll see your recovered print job sitting right there.
To take another crack at printing it, use the command-line print utility NPRINT.EXE. This basically takes a file and copies it to a Novell print queue. Type nprint /? and press [Enter] for a complete syntax. To quickly reprint the file, type the following:
nprint recovered_filename /q=ou.context.queuename
where recovered_filename is the name of the file you just provided when you salvaged the file and ou.context.queuename is the fully distinguished NDS name for the printer, and then press [Enter]. Then, just watch the printer.
You have enough to do during the day without panicking about print jobs getting eaten by rogue printers. Fortunately, if you’re running NetWare, you may be able to recover such print jobs without much trouble. Just don’t let your users know how easy it is, or they’ll be in your office every day asking you to revive their lost print jobs.