Выполнение заданий NetWare на печать

Пакет ncpfs содержит маленькую утилиту nprint, которая посылает задания по выводу на печать через подключения NCP в очередь печати NetWare. Эта команда создает подключение, если оно в настоящее время не существует и использует файл /.nwclient, чтобы скрыть имя пользователя и пароль. Параметры командной строки, используемые, чтобы управлять процессом входа в систему такие же, как и у ncpmount, так что мы не будем их изучать второй раз. Наиболее важные параметры командной строки nprint будут показаны в примерах.

Единственная требуемая опция для nprint имя файла для печати. Если имя файла не задано, nprint примет задание по выводу на печать из stdin. Наиболее важные параметры nprint определяют сервер и очередь. Таблица 15-4 перечисляет наиболее важные параметры.

Таблица 15-4. Опции команды nprint

Опция Описание
-S server_name

Имя сервера печати. Удобно иметь соответствующую запись в файле /.nwclient. Она обязательна.

-q queue_name

Очередь печати, в которую надо послать задание по выводу на печать. Эта опция обязательна.

-d job_description

Текст, который появится в консоли печати при показе списка поставленных в очередь работ.

-l lines

Число строк на страницу. По умолчанию 66.

-r columns

Число столбцов на страницу. По умолчанию 80.

-c copies

Число копий работы, которая будет напечатана. Значение по умолчанию 1.

Простой пример использования nprint:

$ nprint -S REDS01 -q PSLASER -c 2 /home/matt/ethylene.ps
Эта команда напечатает две копии файла /home/matt/ethylene.ps на принтере PSLASER на сервере REDS01, используя имя пользователя и пароль из файла /.nwclient.

Использование nprint с Line Printer Daemon

Раньше я упомянул, что опция -c программы ncpmount полезна для печати.

Linux обычно использует программное обеспечение принтера BSD-стиля. Line printer daemon (lpd) является демоном, который проверяет локальный каталог буфера в поисках поставленных в очередь работ, которые должны быть напечатаны. Пакет lpd читает имя принтера и некоторые другие параметры из указанного файла форматирования и пишет данные на принтер, факультативно передавая данные через фильтр, чтобы трансформировать их или управлять печатью.

Демон lpd использует простую базу данных, названную /etc/printcap, чтобы сохранить конфигурацию принтера, включая то, какие фильтры должны выполняться. lpd обычно выполняется с правами специального системного пользователя lp.

Вы могли бы конфигурировать nprint как фильтр для lpd, который позволяет пользователям Вашей Linux-машины выводить данные непосредственно на удаленные принтеры, которые установлены на сервере NetWare. Чтобы сделать это, пользователь lp должен быть способен писать запросы на NCP-подключение к серверу.

Простой способ достичь этого: определить lp как владельца подключения, установленного другим пользователем. Полный пример того, как устанавливать Linux-печать, чтобы обработать задания по выводу на печать клиентов NetWare состоит из трех шагов:

  1. Написать скрипт-обертку (wrapper script).

    Файл /etc/printcap не разрешает передавать параметры фильтрам. Следовательно, Вы должны написать короткий скрипт, вызывающий команду, которую Вы хотите выполнить, с нужными параметрами:

    #!/bin/sh
    # p2pslaser - simple script to redirect stdin to the
    # PSLASER queue on the REDS01 server
    #
    /usr/bin/nprint -S REDS01 -U stuart -q PSLASER
    #
    

    Сохраните его в файле /usr/local/bin/p2pslaser.

  2. Введите новую запись в /etc/printcap.

    Мы будем должны конфигурировать p2pslaser как выходной фильтр в /etc/printcap. Это делается так:

    pslaser|Postscript Laser Printer hosted by NetWare server:\
    :lp=/dev/null:\
    :sd=/var/spool/lpd/pslaser:\
    :if=/usr/local/bin/p2pslaser:\
    :af=/var/log/lp-acct:\
    :lf=/var/log/lp-errs:\
    :pl#66:\
    :pw#80:\
    :pc#150:\
    :mx#0:\
    :sh:
    

  3. Добавьте опцию -c к команде ncpmount.

    ncpmount -S REDS01 .... -c lp ....
    

    Наш локальный пользователь stuart должен определить пользователя lp как владельца подключения, когда он устанавливает связь с сервером NetWare.

Теперь любой пользователь Linux может указать pslaser как имя принтера при вызове lp. Задание по выводу на печать будет послано на указанный сервер NetWare и помещено в очередь для печати.

Управление очередями печати

Команда pqlist показывает все очереди печати, доступные Вам на указанном сервере. Если Вы не определяете сервер в командной строке, используя опцию -S или логин с паролем, они будут приниматься из заданной по умолчанию записи в файле /.nwclient:

# pqlist -S vbrew_f1 -U guest -n
Server: ALES_F1
Print queue name   Queue ID
---------------------------
TEST               AA02009E
Q2                 EF0200D9
NPI223761_P1       DA03007C
Q1                 F1060004
I-DATA             0D0A003B
NPI223761_P3       D80A0031

Пример показывает список очередей печати, доступных пользователю guest на сервере ALES_F1.

Чтобы посмотреть задания по выводу на печать в очереди, используйте команду pqstat. Требуется имя очереди как параметр, и выводятся все работы в очереди. Вы можете факультативно задать другой параметр, указывающий сколько работ в очереди хотели бы внести в список. Следующий типовой вывод немного сжат, чтобы поместиться на странице:

$ pqstat -S ALES_F1 NPI223761_P1

Server: ALES_F1   Queue: NPI223761_P1          Queue ID: 6A0E000C
   Seq  Name      Description                  Status   Form  Job ID
----------------------------------------------------------------------
     1  TOTRAN    LyX document - proposal.lyx  Active      0  02660001

Вы может видеть только одно задание по выводу на печать в очереди, принадлежащей пользователю TOTRAN. Остальная часть параметров включает описание работы, состояние и идентификатор работы.

Команда pqrm используется, чтобы удалить задания по выводу на печать из определенной очереди печати. Чтобы удалить работу в очереди, скомандуйте:

$ pqrm -S ALES_F1 NPI223761_P1 02660001

Команда довольно проста, но неуклюжая для того, чтобы использовать ее в спешке. Было бы неплохо написать скрипт, чтобы упростить эту операцию.