NetBSD Documentation: Printing to a remote SMB printer from NetBSD
How to print from a NetBSD machine to a printer connected to
an MS Windows machine (or other machine using SMB to share a
printer).
Printing to a remote SMB printer from NetBSD
Introduction (top)
The setup described below has been used for several
years to print PostScript documents from a NetBSD machine to
an HP Laserjet 4L connected to a MS Windows PC. This gives
an example of both 1) calling GhostScript to translate PS
output into something a non-PS (in this case HP-PCL) printer
understands, and 2) setting up
/etc/printcap
so that things printed
with lpr will go to a remote printer that speaks SMB.
Prerequisites (top)
The following steps, if you haven't done them already,
are necessary before you can set up printing to a remote SMB
printer from NetBSD:
- Install the
net/samba
package.
- If your printer is not PostScript, and you'll be
wanting to print PostScript files (ie, your application
produces PostScript output), install the
print/ghostscript
package.
Setting up remote printing using samba (top)
The following steps should allow you to print to a
remote printer from NetBSD, using samba to share it.
- Put the file "smbprint" in
/usr/local/bin
, and make it
executable.
- Create a printcap entry for each remote printer
similar to the example in the file "printcap" included here.
- Create a directory
/etc/lpd/PRINTERNAME
for each remote printer, and put a config file there
similar to the one in the example
file "config" here.
- Create the spool directories you specified in your
printcap entries.
- Make sure you can connect to the printer on the
remote machine manually with:
smbclient //machinename/printername |
If you receive the smb: \> prompt, you're probably good
to go. If not, you may need to add a "-I ip-addr" argument
to the smbclient command in
/usr/local/bin/smbprint
. It is
recommended that you figure out how to derive the ip
address from the remote machine's SMB name with
nmblookup, so that you won't have to hardcode the address
(thus making the script useful for only a single
printer).
- Try printing something. Remember, if you've
specified a gs device in the config file, you
must call lpr with a PostScript
file. Either pipe the output of some program like a2ps to
lpr, or print out one of the PostScript examples included
in the Ghostscript distribution.
- Note that you can specify two different entries in
your printcap, one that translates through Ghostscript,
and one that sends the output untranslated (point them at
different config directories, and give the same "server="
option, but different "device=" options). This way you
can send things in the printer's native language (eg; PCL)
or plain ASCII when needed, and still have a print device
to give to programs that produce PostScript output.
Back to
NetBSD Documentation: Miscellaneous