系统管理指南:打印

第 6 章 使用 LP 打印命令管理打印机(任务)

本章介绍如何使用 LP 打印命令管理打印机。

下面列出了本章中的信息:

有关打印的概述信息,请参见第 1 章

使用 LP 打印命令管理打印机(任务图)

表 6–1 使用 LP 打印命令进行打印机管理(任务图)

任务 

说明 

参考 

添加打印机描述。 

使用带有 -p 选项的 lp 命令添加打印机描述。

如何使用 LP 打印命令添加打印机描述

设置系统的缺省打印机。 

为用户指定缺省打印机目标,以使用户无需键入打印机名称。 

如何使用 LP 打印命令设置系统的缺省打印机目标

使标题页成为可选。 

可以使用户选择在提交打印请求时关闭标题页的打印。  

如何使用 LP 打印命令使标题页成为可选

关闭标题页。 

通过设置打印机的 -o banner=never 变量,您可以在所有情况下关闭标题页。

如何使用 LP 打印命令关闭标题页

定义一类打印机。 

可以通过使用 lpadmin -c 命令将打印机归为一类。

可以将打印机归为以下类:

  • 打印机类型

  • 位置

  • 工作组

如何使用 LP 打印命令定义打印机类

设置打印机的故障警报。 

打印服务可以在检测到打印机故障时通知您。将 -A 选项与 lpadmin 命令一起使用,以设置打印机的故障警报。

如何使用 LP 打印命令为打印机设置故障警报

设置打印机的故障恢复。 

您可以选择不接收任何故障通知。您可以找出有关打印故障的原因,以便可以更正问题。将 -F 选项与 lpadmin 命令一起使用,以定义故障恢复选项。

如何使用 LP 打印命令设置打印机故障恢复

限制用户对打印机的访问。 

要控制用户对打印机的访问,请在打印服务器上创建允许列表和拒绝列表。 

如何使用 LP 打印命令限制用户对打印机的访问

使用 LP 打印命令设置打印机定义

为网络中的打印机设置定义是一项渐进的任务,它允许您为用户提供更有效的打印环境。例如,可以为站点的所有打印机指定打印机描述,以帮助用户查找打印机所在的位置。或者,您可以定义一类打印机,为打印请求提供最快的处理速度。有关使用 LP 打印命令设置打印机定义的更多信息,请参见设置打印机时指定 PPD 文件

许多打印机定义可以使用 Solaris Print Manager 进行设置或重置。有关更多信息,请参见使用 Solaris Print Manager 设置打印机定义

以下过程提供了有关使用 LP 打印命令设置或重置打印机定义的逐步说明。这些过程显示如何快速设置或重置打印机定义。

Procedure如何使用 LP 打印命令添加打印机描述

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。

  2. 添加打印机描述。


    # lpadmin -p printer-name -D "comment"
    -p printer-name

    指定要为其添加描述的打印机的名称。

    -D "comment"

    指定打印机的特征,如位置或管理联系人。将 shell 可能解释的字符(如 *?\!^)用单引号引起来。

    有关更多信息,请参见 lpadmin(1M) 手册页。

  3. 验证 Description 信息是否正确。


    # lpstat -p printer-name -l
    

示例 6–1 添加打印机描述

以下示例说明如何为打印机 luna 添加打印机描述。


# lpadmin -p luna -D "Nathans office"

使用 LP 打印命令设置缺省打印机目标

您可以为用户指定缺省打印机目标,以便用户在使用打印命令时无需键入打印机名称。在将一台打印机指定为缺省打印机之前,系统上的打印服务必须可识别该打印机。

通过设置以下任一项来设置用户的缺省打印机目标:

当应用程序提供打印机目标时,打印服务将使用该目标,而不管您是否设置了系统的缺省打印机目标。如果应用程序未提供打印机目标,或者您在使用打印命令时未提供打印机名称,则打印命令将按特定顺序搜索缺省打印机。下表显示系统缺省打印机目标的搜索顺序。

表 6–2 缺省打印机目标的搜索顺序

搜索顺序 

使用 /usr/bin/lp 命令

使用基于 LPD 的兼容命令(lprlpqlprm

第一 

LPDEST 变量

PRINTER 变量

第二 

PRINTER 变量

LPDEST 变量

第三 

系统的缺省打印机 

系统的缺省打印机 

Procedure如何使用 LP 打印命令设置系统的缺省打印机目标

  1. 在要在其中设置缺省打印机的系统上以超级用户 lp 或同等角色的身份登录。

  2. 设置系统的缺省打印机。


    # lpadmin -d [printer-name]

    -d printer-name 指定要用作系统缺省打印机的打印机的名称。如果您不指定 printer-name,则系统将设置为没有缺省打印机。

  3. 检查系统的缺省打印机。


    # lpstat -d
    

示例 6–2 设置系统的缺省打印机目标

以下示例说明如何将打印机 luna 设置为系统的缺省打印机。如果未设置 LPDESTPRINTER 环境变量,则将打印机 luna 用作系统的缺省打印机。


# lpadmin -d luna
# lpstat -d
system default destination: luna

使用 LP 打印命令打印标题页

标题页标识提交打印请求的用户、对应的打印请求 ID 以及何时打印该请求。标题页还具有可修改的标题,以帮助用户标识其打印输出。

通过标题页可以很方便地确定打印作业的拥有者,这在许多用户将作业提交到同一打印机时特别有帮助。但是,打印标题页会使用更多的纸张,在打印机仅有几个用户时可能是不必要的。在某些情况下,不需要打印标题页。例如,如果打印机中装有特殊纸张或表单(如工资表),则打印标题页可能会导致问题。

缺省情况下,打印服务会强制打印标题页。但是,您可以使用户选择在提交打印请求时关闭标题页的打印。您可以通过 lpadmin 命令或 Solaris Print Manager 设置此选择。如果您为用户提供了选择,则他们必须使用 -o banner 选项关闭标题页的打印。

此外,如果您不需要标题页,则可以关闭标题页以便从不打印它们。您可以通过使用 lpadmin 命令或通过 Solaris Print Manager 关闭标题页的打印。

下表说明用于管理标题页打印的命令选项。

表 6–3 标题页打印

所用命令 

标题页打印 

是否覆盖? 

lpadmin -p printer -o banner

lpadmin -p printer -o banner=always

必需且打印 

如果您是常规用户并使用 -o nobanner,则打印请求。但是,忽略 nobanner 参数。

如果您是超级用户 (root) 或其他特权用户,则不忽略 nobanner 参数。

lpadmin -p printer -o nobanner

lpadmin -p printer -o banner=optional

缺省情况下启用,但是可以使用 lp -o nobanner 命令基于每个请求进行禁用

不适用 

lpadmin -p printer -o banner=never

Disabled 

如果您是常规用户,则不可以。如果您是超级用户 (root) 或 lp 用户,则可以覆盖此选项以导致生成成组传送页。

Procedure如何使用 LP 打印命令使标题页成为可选

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。

  2. 使标题页成为可选。


    # lpadmin -p printer-name -o banner=optional
    
    -p printer-name

    指定要使其标题页成为可选的打印机的名称。

    -o banner=optional

    使用户可以在提交打印请求时不指定标题页。

  3. 验证标题页是否可选。命令输出包含以下行:Banner not required


    # lpstat -p printer-name -l
    

示例 6–3 使标题页成为可选

以下示例说明如何在打印机 luna 上使标题页成为可选。


# lpadmin -p luna -o banner=optional

Procedure如何使用 LP 打印命令关闭标题页

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。

  2. 关闭标题打印。


    # lpadmin -p printer-name -o banner=never
    
    -p printer-name

    指定要关闭其标题页的打印机的名称。

    -o banner=never

    在所有情况下禁用标题页打印。

  3. 验证标题打印是否已关闭。


    # lpstat -p printer-name -l
    

    命令输出包含以下行:Banner not printed

  4. 向打印机提交打印请求以确保不打印标题页。


示例 6–4 关闭标题页的打印

以下示例说明如何在打印机 luna 上禁用标题页的打印。


# lpadmin -p luna -o banner=never

使用 LP 打印命令设置打印机类

通过 LP 打印服务,您可以将在本地连接的若干打印机归为一类。您只能通过使用 lpadmin -c 命令执行此任务。

设置打印机类后,用户可以将该类而不是单台打印机指定为打印请求的目标。此时会使用该类中可用于打印的第一台打印机。这样,就可充分地利用各台打印机,从而更快地完成打印过程。

打印服务不能识别任何缺省打印机类。打印机类仅在对其进行定义后才存在。

下面是定义打印机类的一些方法:

或者,一个类可能包含按特定顺序使用的若干台打印机。LP 打印服务始终按打印机添加到类的顺序来检查是否存在可用的打印机。因此,如果要首先访问高速打印机,请先向类中添加高速打印机,然后再添加低速打印机。因此,高速打印机可处理尽可能多的打印请求。在使用高速打印机时,低速打印机保留为备用打印机。


注 –

仅在本地打印机类中的打印机之间才能平衡打印请求。


与打印机名称类似,类名必须是唯一的,并且最多可以包含 14 个字母数字字符和下划线。

并非必须定义打印机类。仅当您确定使用打印机类对网络上的用户有益时,才应该添加它们。

Procedure如何使用 LP 打印命令定义打印机类

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。

  2. 定义打印机类。


    # lpadmin -p printer-name -c printer-class
    
    -p printer-name

    指定要添加到一类打印机中的打印机的名称。

    -c printer-class

    指定一类打印机的名称。

  3. 验证打印机是否属于某个打印机类。


    # lpstat -c printer-class
    

示例 6–5 定义一类打印机

以下示例说明如何在打印机类 roughdrafts 中添加打印机 luna


# lpadmin -p luna -c roughdrafts

使用 LP 打印命令设置打印机故障警报

如果选择此任务,则 LP 打印服务可以在检测到打印机故障时通知您。通过 lpadmin -A 命令或 Solaris Print Manager,您可以选择以下任一方法来接收打印机故障通知:

但是,lpadmin -A 命令为您提供了接收所选程序指定的消息的其他选项。通过 lpadmin -A 命令,您还可以有选择地关闭已知错误的通知。

除非指定一个程序传送故障通知,否则故障警报的内容是预定义的消息,该消息指明打印机已停止打印并需要进行修理。

下表列出了可以使用 lpadmin -A 命令为打印机设置的警报值。也可以为打印轮、字体盒和表单设置这些警报值。

表 6–4 打印机故障警报值

-A alert 的值

说明 

'mail [username]'

通过电子邮件将警报消息发送到打印服务器上的 rootlp,或者发送到指定的 username(它是用户的名称)。

'write [user-name]'

将警报消息发送到打印服务器上的 rootlp 控制台窗口,或者发送到指定 username(它是用户的名称)的控制台窗口。指定的用户必须登录到打印服务器才能获取警报消息。

'command'

运行每个警报的指定 command 文件。在执行该文件时,保存并恢复环境变量和当前目录。

quiet

在修复故障之前停止警报。当您、root 或指定用户收到重复警报时使用该值。

none

不发送任何警报。如果您不指定打印机的故障警报,则该值为缺省值。 

Procedure如何使用 LP 打印命令为打印机设置故障警报

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。

  2. 为打印机设置故障警报。


    # lpadmin -p printer-name -A alert [-W minutes]
    -p printer-name

    指定要为其指定打印机故障警报的打印机名称。

    -A alert

    指定当打印机发生故障时会发出哪种警报。其中一些有效值包括 mailwritequiet

    -W minutes

    指定出现故障警报的间隔时间(分钟)。如果不指定此选项,则发送警报一次。

  3. 验证是否已正确发送故障警报。


    # lpstat -p printer-name -l
    

示例 6–6 设置打印机的故障警报

以下示例说明如何设置打印机 mars,以将故障警报通过电子邮件发送到名为 joe 的用户。每隔 5 分钟发送一次提醒。


# lpadmin -p mars -A 'mail joe' -W 5

以下示例说明如何设置打印机 venus,以将故障警报发送到控制台窗口。每隔 10 分钟发送一次提醒。


# lpadmin -p venus -A write -W 10

以下示例说明如何停止打印机 mercury 的故障警报。


# lpadmin -p mercury -A none

以下示例说明如何在修复打印机 venus 故障之前停止故障警报。


# lpadmin -p venus -A quiet

使用 LP 打印命令设置打印机故障恢复

如果您选择不发送任何故障通知,仍可以找出有关打印机故障的原因并更正问题。LP 打印服务不会继续使用有故障的打印机。除打印机故障警报外,您还可以在打印请求需要时,提供指示装载打印轮、字体盒和表单的警报。

您只能使用 lpadmin -F 命令来定义打印机的故障恢复选项。此任务在 Solaris Print Manager 中不可用。

打印机故障可能很简单,如纸张不足或者需要更换碳粉盒等。更严重的问题可能包括打印机整体故障或电源故障。

修复打印机故障后,在出现故障时处于活动状态的打印请求将采用以下三种方式之一开始打印:

LP 打印服务需要有单独的打印过滤器,才能从打印停止时所在页的顶部继续打印。此打印过滤器记录由缺省打印过滤器设置的控制序列。打印机使用这些控制序列跟踪页边界。如果使用指定的打印过滤器无法进行恢复,则 LP 打印服务将通知您。有关编写过滤器的信息,请参见如何创建新的打印过滤器

如果您希望在修复打印机故障之后立即恢复打印,请通过使用 enable 命令启用打印机。

下表列出了可以使用 lpadmin -F 命令为打印机设置的故障恢复值。

表 6–5 打印机故障恢复值

-F recover-options 的值

说明 

beginning

在故障恢复之后,从文件开头重新开始打印。 

continue

在故障恢复之后,将从停止打印的页面的顶部开始进行打印。此恢复选项需要打印过滤器。

wait

在故障恢复之后,打印停止,直到您启用打印机。在通过使用 enable 命令启用打印机之后,从打印停止时所在页的顶部开始打印。此恢复选项需要打印过滤器。

Procedure如何使用 LP 打印命令设置打印机故障恢复

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。

  2. 为打印机设置故障恢复。


    # lpadmin -p printer-name -F recovery-options
    
    -p printer-name

    指定要为其指定故障恢复的打印机的名称。

    -F recovery-options

    指定以下三个有效恢复选项之一: beginning continuewait

    有关更多信息,请参见 lpadmin(1M) 手册页。

  3. 验证是否正确设置了打印机故障恢复。


    # lpstat -p printer-name -l
    

示例 6–7 设置打印机故障恢复

以下示例说明如何设置打印机 luna,以从打印停止时所在页的顶部继续打印。


# lpadmin -p luna -F continue

使用 LP 打印命令限制用户对打印机的访问

您可以控制哪些用户可以访问某些打印机或所有可用打印机。例如,您可以禁止一些用户在高品质打印机上打印,以便最大限度地减少开支。要限制用户对打印机的访问,可以通过在打印服务器上使用 lpadmin -u 命令创建 allowdeny 列表。通过 Solaris Print Manager 仅能创建 allow 列表。如果不创建上述任一列表,则打印机对所有可对其进行访问的用户均可用。

allow 列表包含允许访问指定打印机的用户的名称。deny 列表包含被拒绝访问指定打印机的用户的名称。

allowdeny 列表的规则在下表中进行了说明:

允许列表和拒绝列表的规则 

用户结果 

不创建 allowdeny 列表。或者,如果将这两个列表保留为空。

所有用户均可以访问打印机。 

allow 列表中指定 all

所有用户均可以访问打印机。 

deny 列表中指定 all

拒绝服务器上除 rootlp 用户之外的所有用户访问打印机。

allow 列表中建立任何项。

忽略 deny 列表。仅有列出的用户才能访问打印机。

创建拒绝列表,但是不创建 allow 列表或者将 allow 列表保留为空。

拒绝 deny 列表中列出的用户访问打印机。

由于打印服务器负责控制对打印机的访问,因此只能在打印服务器上创建 allowdeny 列表。如果创建 allowdeny 列表,则打印服务器将以排它方式控制用户对打印机的访问。

下表列出了可以添加到 allow 列表或 deny 列表中以用于限制用户对打印机的访问的值。

表 6–6 允许列表和拒绝列表的值

user-list 的值

说明 

user

任何系统上的 User

all

所有系统上的全部用户 

none

不包括任何系统上的用户 

system!user

system 上的 User

!user

仅本地系统上的 User

all!user

任何系统上的 User

all!all

所有系统上的全部用户 

system!all

system 上的所有用户

!all

本地系统上的所有用户 

Procedure如何使用 LP 打印命令限制用户对打印机的访问

  1. 在打印服务器上以超级用户 lp 或同等角色的身份登录。

  2. 允许或拒绝用户访问打印机。


    # lpadmin -p printer-name -u allow:user-list [deny:user-list]
    -p printer-name

    指定对其应用 allow deny 访问列表的打印机的名称。

    -u allow:user-list

    指定要添加到 allow 访问列表的用户名。您可以使用此命令指定多个用户名。使用空格或逗号来分隔名称。如果使用空格,请用引号将名称列表引起来。

    -u deny:user-list

    指定要添加到拒绝用户访问列表的用户名。您可以使用此命令指定多个用户名。使用空格或逗号来分隔名称。如果使用空格,请用引号将名称列表引起来。

    指定的用户将会添加到打印服务器上以下某个文件中打印机的 allowdeny 列表中:


    注 –

    如果将 none 指定为 allow 列表中 user-list 的值,则在打印服务器上不会创建以下文件:


  3. 验证以下命令输出中 Users allowedUsers denied 标题下的信息是否正确:


    # lpstat -p printer-name -l
    

示例 6–8 限制用户对打印机的访问

以下示例说明如何仅允许用户 nathangeorge 访问打印机 luna


# lpadmin -p luna -u allow:nathan,george

以下示例说明如何拒绝用户 nathangeorge 访问打印机 asteroid


# lpadmin -p asteroid -u deny:"nathan george"

管理与 PPD 文件关联的打印机(任务图)

表 6–7 管理与 PPD 文件关联的打印机(任务图)

任务 

说明 

说明 

为使用 PPD 文件的打印队列设置定义。 

使用带有 -o 选项的 lpadmin 命令,修改在与打印队列关联的 PPD 文件中定义的缺省值。

如何为与 PPD 文件关联的打印队列设置缺省值

确定是否已使用 PPD 文件创建打印队列。 

使用 lpstat 命令,确定是否已使用 PPD 文件创建打印队列,或 PPD 文件是否与打印队列关联。

确定 PPD 文件是否与打印队列相关联

管理与 PPD 文件关联的打印机

在设置打印队列的过程中,可以将描述打印队列功能的 PPD 文件与该打印队列关联。PPD 文件中描述的缺省值通常与您站点的首选设置不匹配。例如,您可能希望始终打开双工功能,或者您可能希望始终打印到 A4 大小的纸张。要修改这些缺省值,可以直接编辑 PPD 文件。但是,最简单、最快速的方法是使用带有 -o 选项的 lpadmin 命令进行更改。

一些常见的 PPD 文件值包括:

Procedure如何为与 PPD 文件关联的打印队列设置缺省值

此过程说明如何为使用 PPD 文件描述其功能的打印队列设置缺省值。

开始之前

首先检查 PPD 文件以确定可以覆盖哪些值。要查看有关 PPD 文件的信息,请使用 moreless 命令,或者在文本编辑器中打开该文件。

例如:


$ more /etc/lp/ppd/print-queue.ppd
  1. 成为超级用户或同等角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”

  2. 设置所需选项。


    # lpadmin -p print-queue -o key=value
    
    -p

    指定要更改其中值的打印机名称或打印队列。

    -o

    指定用于调整打印机功能、调整打印机端口特征、配置网络打印机和控制标题使用的选项。

    key=value

    指定选项的键/值对。

    可用于特定打印机的键/值对取决于与打印队列关联的 PPD 文件的内容。

    例如,要设置双工功能,请键入:


    # lpadmin -p print-queue -o Duplex=DuplexNoTumble
    

    要更改进纸盒设置,请键入:


    # lpadmin -p print-queue -o InputSlot=Tray2
    

    可以使用此方法为任何 PPD file/foomatic 选项设置缺省值。

  3. 通过检查打印队列的功能,验证选项是否设置为正确的值。


    # lpstat -p print-queue -l
    

示例 6–9 为使用 PPD 文件的打印队列设置值


# lpadmin -p hp4550 -o Media=A4 -o InputSlot=Tray2
# lpadmin -p hp4550 -o PageSize=A4
# lpstat -p hp4550 -l
printer hp4550 idle. enabled since December  5, 2006  6:38:50 PM CET. available.
        Form mounted:
        Content types: application/postscript
        Description:
        Connection:
 Interface: /usr/lib/lp/model/netstandard_foomatic
        PPD: /usr/lib/lp/model/ppd/system/foomatic/ \
HP/HP-Color_LaserJet_4550-Postscript.ppd.gz
        On fault: write root
        After fault: continue
        Users allowed:
                (all)
        Forms allowed:
                (none)
        Media supported:
                Letter
                A4
                11x17
                A3
                A5
                B5
                Env10
                EnvC5
                EnvDL
                EnvISOB5
                EnvMonarch
                Executive
                Legal
        Banner not required
        Character sets:
                (none)
        Default pitch:
        Default page size:
        Default port setting:
        Options: PageSize=A4, Media=A4, InputSlot=Tray2, \
dest=192.168.245.62:9100, protocol=tcp
# uname -a
SunOS shuttle 5.11 snv_52 i86pc i386 i86pc
# lpstat -p hp4550 -l
printer hp4550 idle. enabled since December  5, 2006  6:38:50 PM CET. available.
        Form mounted:
        Content types: application/postscript
        Description:
        Connection:
        Interface: /usr/lib/lp/model/netstandard_foomatic
        PPD: /usr/lib/lp/model/ppd/system/foomatic/ \
HP/HP-Color_LaserJet_4550-Postscript.ppd.gz
        On fault: write root
        After fault: continue
        Users allowed:
                (all)
        Forms allowed:
                (none)
        Media supported:
                Letter
                A4
                11x17
                A3
                A5
                B5
                Env10
                EnvC5
                EnvDL
                EnvISOB5
                EnvMonarch
                Executive
                Legal
        Banner not required
        Character sets:
                (none)
        Default pitch:
        Default page size:
        Default port setting:
        Options: dest=192.168.245.62:9100, protocol=tcp

确定 PPD 文件是否与打印队列相关联

如果在创建打印队列时使用了 PPD 文件,则会在 lpstat 命令输出中列出配置给指定队列使用的 PPD 文件。如果在创建新的打印队列时不指定 PPD 文件,则 lpstat 命令将继续显示与以前相同的输出。有关表明使用了 PPD 文件的 lpstat 命令输出的示例,请参见如何检查打印机的状态


示例 6–10 使用 lpstat 命令显示有关 PPD 文件的信息

在此示例中,lpstat 命令输出指示打印队列是通过使用 PPD 文件 Mitsubishi-CP50_Color_Printer-cp50.ppd.gz 配置的。


# lpstat -l -p paper
printer paper is idle. enabled since Tue 30 Mar 2004 01:48:38 PM PST
			available.
        Form mounted: 
        Content types: any
        Printer types: unknown
        Description: 
        Connection: direct
        Interface: /usr/lib/lp/model/standard_foomatic
        PPD: /path/Mitsubishi-CP50_Color_Printer-cp50.ppd.gz
        After fault: continue
        Users allowed:
                (all)
        Forms allowed:
                (none)
        Banner required
        Character sets:
                (none)
        Default pitch:
        Default page size:
        Default port settings# lpstat l p <queue>