xenial (1) rlpr.1.gz

Provided by: rlpr_2.05-4ubuntu1_amd64 bug

NAME

       rlpr - remote off-line print

SYNOPSIS

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

DESCRIPTION

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

       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.

MOTIVATION

       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.

OPTIONS

   Environment/Setup
       --debug
              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.

       --port=number
              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.

       --timeout=seconds
              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.

       --tmpdir=tmpdir
              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).

   Behavior
       -#, --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.

       -s
              Ignored (provided for compatibility).

       --send-data-first
              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
              Verbose mode - on by default unless rlpr is invoked as lpr.

       --windows
              "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 job.

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

       --hostname=hostname
              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.

       --extargs="args"
              Change behavior according to OS-specific arguments listed in args.

CONFIGURING A PROXY

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

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

EXAMPLES

       WITHOUT A PROXY  (rlpr is setuid root)

       sun% rlpr --printer=hp4l@foo.bar.org foo.c

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

       sun% who | rlpr --printer=hp4l@foo.bar.org

       prints the output of who(1) to the printer hp4l on the host foo.bar.org.

       WITH A PROXY  (rlpr is a normal program)

       sun% rlpr -Xfoo.bar.org --printer=hp4l@foo.bar.org foo.c

       prints foo.c to the printer hp4l on the host foo.bar.org using foo.bar.org as  a  proxyhost.  Under  this
       configuration,  foo.bar.org  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.

OS-SPECIFIC EXTENSIONS

       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.

ENVIRONMENT VARIABLES

       The following environment variables are used by rlpr:

       RLPR_EXTENSION
              Specifies the operating system to interpret OS-specific arguments relative to.

       RLPR_EXTARGS
              Specifies the OS-specific arguments.

       RLPR_PRINTHOST
              Specifies the default host to print to.

       PRINTER or LPDEST
              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.

       RLPR_PROXYHOST
              Specifies a proxy host to use, if necessary.

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

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

FILES

       ~/.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)

SEE ALSO

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

AUTHOR

       meem <meem@gnu.org>

BUGS / LIMITATIONS

       Some evil applications have lpr hardcoded into them.