This is the command rlpr that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
PROGRAM:
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.
Use rlpr online using onworks.net services