Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
rlpr(1)			     UNIX Reference Manual		       rlpr(1)

       rlpr - remote off-line print

       rlpr   [-Hprinthost]  [-Pprinter]  [-Xproxyhost]	 [-#copies]  [-Cclass]
       [-Jjob]	 [-Ttitle]   [-Uuser]	[-i[indent]]	[-wwidth]    [-1234cd-
       fghlmnopqrstvNV]	[--debug] [--port=port]	[--hostname=hostname] [--send-
       data-first] [--timeout=seconds] [--tmpdir=dir] [--verbose]  [--windows]
       [file ...]

       rlpr  uses  TCP/IP to send print	jobs to	lpd servers anywhere on	a net-
       work.  Unlike lpr, it does not require that the remote printers be  ex-
       plicitly	 known	to the local system (traditionally through /etc/print-
       cap), and thus is considerably more flexible and	requires less adminis-

       rlpr can	be used	anywhere a traditional lpr might be used, and is back-
       wards compatible	with traditional BSD lpr.  If rlpr is invoked as  lpr,
       it preserves all	known lpr semantics.

       rlpr can	be installed and used in two different ways:  (the same	guide-
       lines apply for rlpq(1) and rlprm(1))

       1. Ideally, if the rlpr client can be installed setuid root, then  rlpr
       can  interact  directly	with other lpd's on the	network.  See EXAMPLES

       2. If rlpr cannot be installed setuid root (in cases where one  is  not
       the administrator on the	machine	one needs to print from) then rlpr can
       be used in conjunction with an rlprd proxy agent.  See	CONFIGURING  A
       PROXY and  EXAMPLES below for details.

       Traditional Berkeley lpr	has one	major drawback:	the mortal user	cannot
       lpr to a	printer	which is not listed explicitly	in  the	 /etc/printcap

       This  is	especially annoying in scenarios where there is	a central UNIX
       server which many users (using their own	desktop	computers) connect  to
       in  order  to  do  their	daily work; If those users wish	to print files
       from the	central	server to their	personal machines (assuming they had a
       local   lpd),   they  cannot  do	 this  without	the  central  server's
       /etc/printcap being edited to contain the host and printer of each user
       on the network -	this scales horribly.

	      Print gobs of debugging information.

       -N, --no-bind
	      Don't  try  to bind to privileged	port before connecting to lpd.
	      Please see CONFIGURING A PROXY below for information on  use  of
	      this option.

	      Select an	alternate port (instead	of 7290) to connect to,	if us-
	      ing rlprd.  Usually not needed.

       -H, --printhost=host
	      Select the host to print to (used	with -P).

	      Instead of using -H, one can specify the hostname	 directly  in-
	      cluding  it with the printer name	with the printer@hostname syn-

       -P, --printer=printername, --queue=printername
	      Select the printer to print to (used with	-H).

       -X, --proxyhost=proxyhost
	      Select the proxy host to use, if necessary.

	      Set the inactivity timer.	 If the	connection hangs for more than
	      seconds  seconds,	then rlpr will give up.	 Use the special value
	      `-1' to wait forever.  Default timeout is	3 seconds.

	      Use tmpdir for temporary files (by default, /tmp is used)

       -V, --version
	      Print version and	exit.

       NOTE: instead of	specifying the printer,	printhost, or proxy  variables
       on  the commandline, one	can set	up defaults through either environment
       variables or rlprrc configuration files.	 For information  on  personal
       or system-wide rlprrc files, see	rlprrc(5).

       -#, --copies=copies
	      Print  copies  copies of each document - use sparingly, printers
	      aren't copiers.

       -m, --mail
	      Send mail	upon completion.

       -q, --quiet, --silent
	      Quiet mode - stay	quiet (except for fatal	errors).

       -r, --remove
	      Remove file after	printing.

	      Ignored (provided	for compatibility).

	      Send the "data" transaction before  the  "control"  transaction.
	      Should never be required when rlpr is used in conjunction	with a
	      RFC 1179 conformant lpd.	However, buggy	implementations	 exist
	      which require these semantics.  Use only when necessary.

	      Verbose mode - on	by default unless rlpr is invoked as lpr.

	      "Windows"	 mode -	for printing multiple files to a windows-based

   Document Content
       -1   Print data using troff(1) R	(times roman) font.
       -2   Print data using troff(1) I	(times italic) font.
       -3   Print data using troff(1) B	(times bold) font.
       -4   Print data using troff(1) S	(special) font.
       -c   Assume data	has been produced by cifplot(1).
       -d   Assume data	has been produced by tex(1).
       -f   Filter data	assuming the start of each line	has
	   a fortran carriage control character.
       -g   Assume data	has been produced by the BSD plot library.
       -l   Treat control characters as	regular	characters.
       -n   Assume data	has been produced by ditroff.
       -o   Assume data	is postscript.
       -p   Print data using pr(1).
       -t   Assume data	has been produced by troff(1).
       -v   Assume the data contains a raster image.

   Document Format
       -i, --indent=[cols]
	      Indent output by cols columns (8 by default).

       -h, --no-burst
	      Do not print burst (banner) page.

       -w, --width=width
	      Use width	for page width when using pr(1).

       -C, --class=class
	      Use class	for the	class name on burst page instead of the	 local
	      system name.

       -J, --job=jobname
	      Use  jobname for the job name on burst page instead of the first
	      filename in the job.

       -T, --title=title
	      Use title	for the	title when using pr(1) instead of the  current

       -U, --user=username
	      Use  username for	the user name on burst page instead of the ac-
	      tual username.

	      Use hostname for the hostname on the burst page instead  of  the
	      local system name.

   OS-Specific Extensions
       See OS-SPECIFIC EXTENSIONS below	for details on these options.

       --ext=os	--extension=os
	      Interpret	 the  arguments	passed to --extargs as if on operating
	      system os.  Currently, os	must be	either hpux or none.

	      Change behavior according	to  OS-specific	 arguments  listed  in

       In  situations  where  the rlpr client cannot be	installed setuid root,
       rlpr often cannot directly talk to an lpd because  most	lpd's  require
       that  requests  come  from privileged ports. Unfortunately, rlpr	cannot
       "come from a privileged port" without having superuser status.
       The privileged port requirement is part of RFC 1179.

       That said, some lpd's, most notably some	of the ones which have shipped
       with  Windows NT, Solaris, and NCRunix, do not require requests to come
       from a privileged port.	Before going through the work of configuring a
       proxy,  you  should  make sure one is required for your situation.  You
       can check by trying to run rlpr:	if it is successful  in	 spooling  the
       job, you	do not need to install rlpr setuid root.  You should then pass
       the -N (or the more verbose --no-bind) to rlpr in the  future  to  sup-
       press rlpr's warning messages.

       If  your	 situation does	not require a privileged port, do not use one.
       You can explicitly request a regular port, even when rlpr has been  in-
       stalled	setuid	root,  by  using the --no-bind option.	This is	a good
       idea because there are only 11 privileged ports that  the  RFC  allows.
       This  ends  up  having the practical implication	of limiting your print
       requests	to about 11 per	every 3	minutes, which is often	unacceptable.

       The rest	of this	section	assumes	that rlpr cannot be  installed	setuid
       root  in	your situation,	and that a remote lpd requires rlpr connect to
       it from a privileged port.  It requires that you	or  someone  you  know
       has  root  access to another machine the	network, so that you can use a
       proxy, known as rlprd, to get around the	problem.

       rlprd works by taking lpd requests on a	non-privileged	port,  mapping
       them  to	 a  privileged port, and sending them out to the real lpd. The
       proxy and the lpd need not be on	the same machine.

       In the scenario provided	in the motivation, if each user	had  root  ac-
       cess  on	his own	machine, it would be optimal for the user to start rl-
       prd up on his own machine, in which case	the proxy  and	the  printhost
       are  the	 same  machine.	 The user would	additionally have to make sure
       his own machine was listed in his local /etc/hosts.lpd so that his  lpd
       would accept connections	from his rlprd.

       However,	 if the	machine	the user wants to print	to is not running unix
       (but is running an lpd) (i.e. Windows, WinNT, etc) --  Then  that  user
       can configure his lpd to	accept connections from	an rlprd running some-
       where on	the network, and use that rlprd	as a proxy for rlpr.

       For more	on this	mess, see rlprd(8).

       WITHOUT A PROXY	(rlpr is setuid	root)

       sun% rlpr foo.c

       prints foo.c to the printer hp4l	 on  the  host  (assuming  has	been configured	to accept print	requests from host sun
       in its /etc/hosts.lpd).

       sun% who	| rlpr

       prints  the  output  of	who(1)	to  the	 printer  hp4l	on  the	  host

       WITH A PROXY  (rlpr is a	normal program)

       sun% rlpr foo.c

       prints  foo.c  to  the  printer	hp4l  on  the  host using as a	proxyhost. Under this configuration, needs
       to  be  configured to accept print requests from	the proxy (itself) and
       not from	sun. In	situations where the proxy and the printhost  are  not
       the same	machine, this can lead to some security	holes due to the orig-
       inal lameness of	berkeley lpd's host-based security.

       NOTE: if	a proxyhost isn't specified anywhere, rlpr assumes  one	 isn't

       Some vendors have added features	to their BSD-based lpr products, which
       are upwardly compatible with lpr	but incompatible with one another.  To
       support these extensions, rlpr allows the user to indicate what operat-
       ing system to emulate and provide a string of OS-specific options,  ei-
       ther through commandline	arguments or environment variables.

       Note  that  for correct operation, these	extensions should be only used
       when interoperating with	an lpd provided	by the vendor  for  the	 indi-
       cated operating system.

       The following environment variables are used by rlpr:

	      Specifies	 the  operating	 system	to interpret OS-specific argu-
	      ments relative to.

	      Specifies	the OS-specific	arguments.

	      Specifies	the default host to print to.

	      Specifies	a default printer (printqueue) to use.
	      First PRINTER is consulted, then LPDEST.

	      Note that	one can	also specify the host to print to  by  setting
	      printer  to  be  printer@hostname.   This	may be more convenient
	      than setting RLPR_PRINTHOST, but will  confuse  the  traditional
	      BSD print	commands.

	      Specifies	a proxy	host to	use, if	necessary.

	      If  RLPR_CONFDIR is set, it is the directory containing the sys-
	      tem-wide rlprrc file.  By	default, /etc is used.

	      If TMPDIR	is set,	it is used for temporary files.	  By  default,
	      /tmp is used.

       ~/.rlprrc	 Personal printer/host database
       $TMPDIR/cf*	 Temporary control files on local machine
       $TMPDIR/df*	 Temporary data	file for jobs from stdin
       /var/spool/*/cf*	 Temporary control files on printhost
       /var/spool/*/df*	 Temporary data	files on printhost
       /etc/hosts.lpd	 Host-based security on	printhost
       /etc/passwd	 Personal identification
       /usr/local/etc/rlprrcSystem-wide	printer/host database (by default)

       rlpq(1),	rlprm(1), rlprd(8), rlprrc(5), lpr(1)

       meem <>

       Some evil applications have lpr hardcoded into them.

rlpr 2.04			  2000/12/30			       rlpr(1)


Want to link to this manual page? Use this URL:

home | help