Provided by: rlpr_2.05-5_amd64 bug


       rlpr - remote off-line print


       rlpr  [-Hprinthost]  [-Pprinter]  [-Xproxyhost]  [-#copies]  [-Cclass]  [-Jjob]  [-Ttitle]
       [-Uuser]   [-i[indent]]   [-wwidth]   [-1234cdfghlmnopqrstvNV]   [--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 network.  Unlike lpr,  it
       does  not  require  that  the  remote  printers  be  explicitly  known to the local system
       (traditionally through /etc/printcap), and thus is considerably more flexible and requires
       less administration.

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

       rlpr  can  be  installed  and  used in two different ways:  (the same guidelines 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 below.

       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 file.

       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 using 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 including it with the
              printer name with the printer@hostname syntax.

       -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

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

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

   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

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

       -U, --user=username
              Use username for the user name on burst page instead of the actual 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 args.


       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
       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 suppress 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 installed 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

       In the scenario provided in the motivation, if each  user  had  root  access  on  his  own
       machine,  it  would be optimal for the user to start rlprd 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 somewhere 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 original lameness of
       berkeley lpd's host-based security.

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


       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 operating system to emulate and provide a string  of  OS-
       specific options, either 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 indicated operating system.


       The following environment variables are used by rlpr:

              Specifies the operating system to interpret OS-specific arguments 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 system-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
       /etc/rlprrc       System-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.