mirror of
https://github.com/samba-team/samba.git
synced 2025-01-07 17:18:11 +03:00
87 lines
3.6 KiB
Plaintext
87 lines
3.6 KiB
Plaintext
This is a short description of how to debug printing problems with
|
|
Samba. This describes how to debug problems with printing from a SMB
|
|
client to a Samba server, not the other way around. For the reverse
|
|
see the examples/printing directory.
|
|
|
|
Please send enhancements to this file to samba-bugs@samba.anu.edu.au
|
|
|
|
Ok, so you want to print to a Samba server from your PC. The first
|
|
thing you need to understand is that Samba does not actually do any
|
|
printing itself, it just acts as a middleman between your PC client
|
|
and your Unix printing subsystem. Samba receives the file from the PC
|
|
then passes the file to a external "print command". What print command
|
|
you use is up to you.
|
|
|
|
The whole things is controlled using options in smb.conf. The most
|
|
relevant options (which you should look up in the smb.conf man page)
|
|
are:
|
|
print command
|
|
lpq command
|
|
lprm command
|
|
|
|
Samba should set reasonable defaults for these depending on your
|
|
system type, but it isn't clairvoyant. It is not uncommon that you
|
|
have to tweak these for local conditions.
|
|
|
|
On my system I use the following settings:
|
|
|
|
print command = lpr -r -P%p %s
|
|
lpq command = lpq -P%p
|
|
lprm command = lprm -P%p %j
|
|
|
|
The % bits are "macros" that get dynamically replaced with variables
|
|
when they are used. The %s gets replaced with the name of the spool
|
|
file that Samba creates and the %p gets replaced with the name of the
|
|
printer. The %j gets replaced with the "job number" which comes from
|
|
the lpq output.
|
|
|
|
When I'm debugging printing problems I often replace these command
|
|
with pointers to shell scripts that record the arguments, and the
|
|
contents of the print file. A simple example of this kind of things
|
|
might be:
|
|
|
|
print command = cp %s /tmp/tmp.print
|
|
|
|
then you print a file and look at the /tmp/tmp.print file to see what
|
|
is produced. Try printing this file with lpr. Does it work? If not
|
|
then your problem with with your lpr system, not with Samba. Often
|
|
people have problems with their /etc/printcap file or permissions on
|
|
various print queues.
|
|
|
|
Another common problem is that /dev/null is not world writeable. Yes,
|
|
amazing as it may seem, some systems make /dev/null only writeable by
|
|
root. Samba uses /dev/null as a place to discard output from external
|
|
commands like the "print command" so if /dev/null is not writeable
|
|
then nothing will work.
|
|
|
|
Other really common problems:
|
|
|
|
- lpr isn't in the search path when Samba tries to run it. Fix this by
|
|
using the full path name in the "print command"
|
|
|
|
- the user that the PC is trying to print as doesn't have permission
|
|
to print. Fix your lpr system.
|
|
|
|
- you get an extra blank page of output. Fix this in your lpr system,
|
|
probably by editing /etc/printcap. It could also be caused by
|
|
incorrect setting on your client. For example, under Win95 there is a
|
|
option Printers|Printer Name|(Right
|
|
Click)Properties|Postscript|Advanced| that allows you to choose if a
|
|
Ctrl-D is appended to all jobs. This will affect if a blank page is
|
|
output.
|
|
|
|
- you get raw postscript instead of nice graphics on the output. Fix
|
|
this either by using a "print command" that cleans up the file before
|
|
sending it to lpr or by using the "postscript" option in smb.conf.
|
|
|
|
Note that you can do some pretty magic things by using your
|
|
imagination with the "print command" option and some shell
|
|
scripts. Doing print accounting is easy by passing the %U option to a
|
|
print command shell script. You could even make the print command
|
|
detect the type of output and its size and send it to an appropriate
|
|
printer.
|
|
|
|
If the above debug tips don't help, then maybe you need to bring in
|
|
the bug gun, system tracing. See Tracing.txt in this directory.
|
|
|