- Сервер печати CUPS
- Содержание
- Сервер печати CUPS
- Установка
- Настройка
- Web интерфейс
- Управление сервером CUPS и его конфигурирование
- Управление сервером CUPS
- Настройка сервера печати для сети
- Конфигурирование в автоматическом режиме
- Конфигурирование сетевых принтеров
- Классы принтеров
- Отключение принтеров
- Заключение
- Как возобновить работу CUPS-принтера из командной строки?
- 11 ответов
Сервер печати CUPS
Содержание
Сервер печати CUPS
Первичный (основной) механизм для печати и сервисов печати в Ubuntu — это Общая система печати UNIX (Common UNIX Printing System — CUPS). Данная система печати — это свободный, доступный и переносимый слой, который стал новым стандартом печати для большинства дистрибутивов Linux.
CUPS управляет заданиями печати и обеспечивает сетевую печать с использованием стандарта IPP (интернет протокол печати), поддерживая огромный список принтеров от матричных до лазерных и любых других. CUPS также поддерживает PostScript описание принтеров (PPD) и автоопределение сетевых принтеров, а также простую настройку и администрирование через web интерфейс.
Установка
Для установки CUPS на ваш Ubuntu компьютер просто используйте sudo для выполнения команды apt-get, передав ей названия пакетов в качестве параметра. Полная установка CUPS содержит много зависимостей, но они все могут быть определены в одной команде. Введите следующее в терминале для установки CUPS:
После аутентификации вас по паролю, пакеты должны загрузиться и установиться без ошибок. В заключении установки сервер CUPS будет запущен автоматически.
При необходимости решения проблем, вы можете получить доступ к ошибкам сервера CUPS через файл журнала /var/log/cups/error_log. Если журнал ошибок не дает достаточно информации для решения какой-либо проблемы, уровень журналирования CUPS можно повысить изменением директивы LogLevel в файле настроек (описывается ниже) до debug или даже debug2 со стандартного info, что будет сохранять в журнал абсолютно все. Если вы проведете такое изменение, не забудьте вернуть все обратно после решения проблемы, чтобы избежать излишнего разрастания файла журнала.
Настройка
Прежде чем редактировать файл настроек, вам стоит сделать копию оригинального файла и защитить ее от записи, чтобы у вас были оригинальные настройки в качестве руководства, которые можно восстановить при необходимости.
Скопируйте и защитите от записи файл /etc/cups/cupsd.conf.original с помощью следующих команд в терминале:
1. ServerAdmin: Для настройки email адреса назначенного администратора CUPS сервера, просто откройте на редактирование файл /etc/cups/cupsd.conf с помощью своего любимого текстового редактора, и добавьте или измените строку ServerAdmin соответствующим образом. Например, если вы администратор CUPS сервера и ваш email адрес ‘bjoy@somebigco.com’, вам следует изменить строку ServerAdmin следующим образом:
2. Listen: В Ubuntu по умолчанию установленный CUPS сервер слушает только интерфейс обратной петли по адресу 127.0.0.1. Чтобы заставить CUPS сервер прослушивать актуальный IP адрес сетевого адаптера, вы должны указать сетевое имя или пару IP адрес/порт добавочной директивой Listen. Например, если ваш сервер находится в локальной сети с IP адресом 192.168.10.250 и вы хотите сделать его доступным для других систем в этой подсети, отредактируйте /etc/cups/cupsd.conf, добавив директиву Listen, как показано ниже:
В приведенном примере вы можете закомментировать или удалить ссылки на адрес обратной петли (127.0.0.1), если вы не хотите, чтобы cupsd прослушивал этот интерфейс, а только Ethernet интерфейсы локальной сети. Чтобы разрешить прослушивать все сетевые интерфейсы, назначенные определенному сетевому имении, включая обратную петлю, вы можете создать такую запись Listen для имени (например) socrates:
или опустить директиву Listen и использовать вместо нее Port:
Для дополнительных примеров по директивам в файле настройки CUPS, смотрите ассоциированную страницу системного руководства, введя в терминале следующую команду:
Web интерфейс
Чтобы выполнить административную задачу через web интерфейс, вы должны либо разрешить учетную запись root на своем сервере, либо авторизоваться как пользователь из группы lpadmin. По соображениям безопасности CUPS не авторизует пользователей с пустыми паролями.
Чтобы добавить пользователя в группу lpadmin, выполните в терминале следующую команду:
Дальнейшая документация доступна через закладку Documentation/Help web интерфейса.
Источник
Управление сервером CUPS и его конфигурирование
Система печати CUPS – универсальный и очень гибкий инструмент для организации печати и управления принтерами в сети. При этом CUPS довольно просто администрируется, из-за чего эта система очень популярна среди системных администраторов. Также эта система обладает некоторыми особенностями и возможностями. Которые, если ими грамотно и умело распоряжаться, делают CUPS незаменимой для построения системы печати в обслуживаемой сети.
Управление сервером CUPS
Работа системы печати CUPS завязана на взаимодействии клиентов печати с самим сервером cupsd. Вообще, то как работает cupsd, очень похоже на то как работает веб-сервер Apache. Даже формат конфигурационного файла /etc/cups/cupsd.conf очень похож на соответствующий файл Apache. Как можно видеть работа сервера cupsd определяется настройками, заданными в файле cupsd.conf, а настройка его работы и управление им аналогична настройке и управлению Apache.
По-умолчанию, так сказать «из коробки» файл cupsd.conf очень детально комментирован и разобраться с теми или иными опциями особого труда не составляет. Чтение конфигурации производится сервером cupsd только в момент запуска. Поэтому после внесения и сохранения сделанных настроек необходимо перезапустить cupsd. Это можно сделать стандартным для Linux образом, выполнив команду:
Для редактирования конфигурационного файла системы CUPS можно использовать не только текстовые редакторы, но также и графический веб-интерфейс, доступный по адресу http://localhost:631/admin в веб-браузере.
Если используется графическая среда, то в современных дистрибутивах в настройках системы всегда имеется отдельный раздел для управления печатью и принтерами, который предоставляет, пусть и самые базовые, но достаточные возможности для управления и настройки системы печати.
Настройка сервера печати для сети
Когда в сети имеются несколько принтеров, которые по объективным причинам не могут быть подключены к одному компьютеру или когда принтеры не подключены непосредственно к тому компьютеру, на котором работает главный сервер CUPS, то целесообразно настроить сервер cupsd, так, чтобы он мог принимать задания на печать из сети. По-умолчанию CUPS работает с локально установленными принтерами, а для того, чтобы она могла обрабатывать задания из сети, в конфигурационном файле cupsd.conf нужно внести некоторые изменения. Для начала, в секции Location:
нужно добавить ещё одну директиву «Allow From». В итоге должно получиться:
Таким образом, в качестве адреса сети может выступать IP-адрес (например 192.168.0.0), для которой следует обслуживать задания. После этого следует указать директиву BrowseAddress:
Она задаёт адрес и порт для рассылки информации об обслуживаемых сервером cupsd принтерах всем компьютерам из указанной с помощью директивы «Allow From» сети.
Конфигурирование в автоматическом режиме
В большинстве случаев при добавлении новых принтеров система CUPS способна самостоятельно определить, что в систему устанавливается новый принтер. В самом сложном случае придётся выполнить эту процедуру вручную через веб-интерфейс системы CUPS и пройти через несколько несложных этапов установки и настройки принтера. Это всецело заменяет работу того самого «удобного» установочного ПО (программного обеспечения). Которое поставляется производителями принтеров для систем Windows и Mac OS, но обходит стороной (довольно часто) системы Linux.
Если CUPS сконфигурирована так, что автоматически могут распознаваться принтеры, подключаемые к другим компьютерам в сети (и даже из других подсетей). То центральный сервер cupsd просто получит уведомление об этом и сможет обслуживать новые принтеры. Причём об этом будут «знать» все сконфигурированные клиенты данной сети и даже подсетей. Это возможно благодаря тому, что на каждом компьютере, на котором установлена и запущена система CUPS работает свой сервер cupsd, который обменивается (если задана соответствующая конфигурация) информацией о «своих» принтерах с серверами на других машинах, предоставляя общий пул принтеров в сети.
Это очень удобно, ведь в большинстве случаев нет необходимости добавлять новый локальный или даже удалённый принтер в перечень доступных устройств печати для локальной машины или копировать его PDD-файл.
Конфигурирование сетевых принтеров
Для этой задачи в системах Linux нет ничего необычного. В данном случае даже используемая система печати особой роли не играет, поскольку сетевая конфигурация сводится к заданию IP-адреса собственно, принтеру. Сделать это можно двумя способами:
- использовать DHCP-сервер, который автоматически будет «выдавать» сетевым устройствам, в том числе и подключенным к сети принтерам их IP-адреса;
- использовать статический IP-адрес для принтера, заданный вручную.
Для второго случая используется консоль принтера (с кнопками, табло и т. д.), в меню которого можно отыскать раздел для задания IP-адреса. Также некоторые принтеры предоставляют виртуальную консоль, доступную через подключение (к принтеру) по последовательному порту.
Некоторые модели принтеров даже предоставляют красивый и удобный веб-интерфейс для конфигурации. Однако задействовать его можно только после того как IP-адрес для принтера задан и он доступен в сети.
Добавление принтеров в систему CUPS может быть произведено с помощью команды lpadmin, например так:
Первая команда добавляет локально подключенный принтер (через параллельный интерфейс) под именем localprinter. Подключая его через порт /dev/lp0. А вторая команда добавляет сетевой принтер netprinter. Подключая его через IP-адрес 192.168.0.5. При этом в обоих случаях для каждого устройства указываются универсальные URI-идентификаторы (составляющие адрес подключения) и PPD-файл (PostScript Printer Description). Доступный из набора таких файлов в каталоге /usr/share/cups/model.
Теперь, если сервер cups настроен как сетевой сервер печати. То добавленные принтеры станут доступными для всей сети. При этом перезапуск cupsd не требуется.
Для разных конфигураций подключения существуют различные варианты URI-идентификаторов, например:
Как можно видеть, в URI-идентификаторах могут использоваться передаваемые параметры. Чтобы узнать, какие устройства печати доступны системе CUPS, а также понятный ей список типов URI-идентификаторов. Можно воспользоваться командой lpinfo -v:
Классы принтеров
Классы принтеров предназначены для группирования принтеров, которые должны обслуживаться одной очередью заданий. Для любого из принтеров одного класса может быть доступно для выполнения текущее задание. Однако передано задание будет тому, кто первый освободился в очереди.
Чтобы создать класс принтеров classprint, и добавить в него принтеры printerone и printertwo, следует выполнить следующие команды:
Как видно, специальной команды для задания класса нет — он существует когда в него добавлен принтер. В системе CUPS также можно задавать нескольким принтерам одинаковые имена и при этом они будут считаться объединёнными в один класс. Такие вот интеллектуальные способности у CUPS.
Отключение принтеров
Иногда необходимо временно сделать принтер недоступным для печати. Т. е. чтобы сервер cupsd не удалял его из своего пула обслуживания, а просто не отправлял на него задания от клиентов. Такие ситуации возникают, когда принтер нужно временно отсоединить для обслуживания. Чтобы полностью удалить принтер (или класс) следует использовать команду:
Для временного отключения принтера используется блокировка очереди печати для него. Причём блокироваться может как «выходная» часть очереди (на стороне принтера), так и «входная» — на этапе формирования самой очереди сервером. В первом случае задания всё равно будут отправляться на принтер, но никогда не будут выполнены. Во втором случае выполнены будут только те задания, которые уже находились в очереди. А все последующие после блокировки «входа» будут отклоняться.
Для контроля над выходной частью очереди печати (на стороне принтера) предназначены команды cupsdisable и cupsenable – которые выключают и включают выход соответственно. Для управления состоянием входа очереди предназначены команды reject и accept.
Если принтер становится «недоступным » на длительное время (например унесли на ремонт или обслуживание). То целесообразнее использовать отключение его от его очереди, т. е.:
Если же точно известно, что принтер будет недоступен около двадцати минут (пока будет производится замена картриджа). То можно использовать команду:
Чтобы легче запомнить и надёжнее применять эти команды в зависимости от ситуации. Нужно понимать, что отклоняются (reject) и принимаются (accept) задания очереди. А отключаются (cupsdisable) и включаются (cupsenable) только устройства — т. е. принтеры. Совсем неразумно использовать команду cupsdisable, если принтер недоступен длительное время. При этом на него поступают (через вход очереди) задания, которые скорее всего не выполнятся. Команда reject в данном случае предпочтительнее.
В следующей таблице приведены все команды, используемые системой CUPS:
Команда | Назначение |
cups-config | Выводит информацию об API-интерфейсе, компиляторе, каталоге и канале связи системы CUPS. |
cupsdconf | Утилита для конфигурирования. |
cupsdisable | Отключает печать принтера или класса. |
cupsenable | Включает печать принтера или класса. |
lpinfo | Показывает доступные устройства или драйверы. |
lpoptions | Отображает или устанавливает опции и параметры по умолчанию принтера. |
Ippasswd | Добавляет, изменяет или удаляет пароли дайджеста. |
По каждой из этих команд можно получить подробную справку из интерактивного справочного руководства. Используя команду man команда.
Заключение
Система печати CUPS пожалуй самая удачная среди открытых и свободных систем подобного рода. Не обременяющая администраторов излишней сложностью или неповоротливостью. Но при этом предоставляет практически неограниченные возможности для масштабирования и интеграции в целевых системах и сетях.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как возобновить работу CUPS-принтера из командной строки?
У меня есть принтер в CUPS, который из-за проблем с драйверами (HP 1010) время от времени переходит в паузу.
Я хотел бы написать сценарий оболочки, который будет выполняться один раз в час, чтобы возобновить работу принтера в CUPS. Но я понятия не имею, после того, как пару минут запустил поисковый процесс, как возобновить работу принтера из командной строки.
11 ответов
Есть команда с чашечкой.
запускает отключенный принтер (чтобы узнать имя принтера, вы можете перечислить свои принтеры с помощью lpstat -p или lpc status ).
Возможно, вам придется запустить команду с правами root или через sudo. Поэтому, если вам нужно включить принтер в сценарий оболочки, вам придется добавить оболочку к корневому файлу root или отредактировать файл sudoers.
Ваша проблема может быть решена по-разному, в зависимости от версии CUPS, которую вы используете.
Дополнительные последние версии CUPS (версия 1.2 и выше) имеют встроенную функциональность, которая может помочь здесь. Это называется «ErrorPolicy». Это значение по умолчанию выбрано в cupsd.conf и определяет, как cupsd должен обрабатывать очереди печати, которые не ведут себя так, как ожидалось. У вас есть 3 варианта для каждой отдельной очереди:
Объяснение:
abort-job
— Прервать это задание и продолжить следующее задание в той же очереди
retry-job
— Повторите это задание после ожидания N секунд (где N определяется директивой cupsd.conf «JobRetryInterval»).
retry-this-job
— Повторить текущее задание немедленно и неопределенно.
stop-printer
— Остановить текущую очередь печати и сохранить работу для будущей печати. Это по-прежнему значение по умолчанию, если вы не указали иначе в соответствии с вышеупомянутыми альтернативами. Это также было по умолчанию + только возможное поведение для всех очередей в предыдущих версиях CUPS (тот, который вы хотите избавиться от вашего вопроса).
Кроме того, вы можете установить отдельные ошибки в каждой отдельной очереди печати. Этот параметр будет отмечен в файле printers.conf. (Установите его из командной строки с помощью lpadmin -p printername -o printer-error-policy=retry-this-job ).
Для старых версий CUPS я бы рекомендовал посмотреть beh , CUPS BackEnd Handler . beh — это оболочка, которая может быть применена к любому серверу CUPS.
Предполагая, что ваша очередь печати в настоящее время определила бэкэнд socket://192.168.1.111:9100 , и он ведет себя так, как вам не нравится (отключается от cupsd время от времени из-за проблем с сетевым подключением). С помощью beh вы повторно определяете свой бэкэнд следующим образом:
Это повторит задание 20 раз с двухминутными интервалами и отключит очередь только тогда, когда все еще не будет выполнено. Или вы можете сделать это:
Это повторяет задание 3 раза с 5-секундными задержками между попытками. Если задание все еще не удается, оно отбрасывается, но очередь не отключена. Вы хотите, чтобы cupsd пытался бесконечно подключаться к устройству? Хорошо, попробуйте следующее:
Попробуйте бесконечно, пока принтер не вернется. Интервалы между попытками подключения 30 секунд. Задание не теряется при выключении принтера. Вы можете намеренно отложить печать, просто отключив принтер. Хорошая конфигурация для настольных принтеров и /или домашних пользователей.
В общем, нет необходимости возиться с скриптами bash, заданиями cron, lpadmin , cupsenable или sudo , чтобы повторно активировать очереди CUPS с ошибкой.
Параметр -E , используемый с lpadmin должен сделать это. Возможно, вы просто можете создать задание cron с помощью команды lpadmin .
Почасовая запись cron :
Вы можете добавить это, выполнив:
Убедитесь, что после имени принтера вы добавили -E , потому что здесь параметр принтера, а не параметр lpadmin. Обратите внимание на следующую выдержку из страницы man lpadmin , которая указана в комментарии ниже:
При указании перед параметрами -d, -p или -x параметр -E заставляет шифрование при подключении к серверу.
После перезапуска и cups и avahi-daemon и идентификация принтера с помощью lpstat -p и включение с помощью cupsenable , я смог снова распечатать. Перезапуск только cups и включение не делали трюк.
Я также изменил политику по умолчанию для повторной работы и, наконец, в конечном итоге избежал ошибок в будущем с помощью cronjob:
где poissa käytöstä — финский текст локализации для обслуживания «не в порядке» и HP_Tuloostin — это имя моего принтера.
По моему опыту, политики по умолчанию и текущие политики принтера должны быть настроены на повторную работу. Политика по умолчанию — это только политика, которую вы получаете при установке нового принтера.
В этом списке перечислены все файлы ppd, которые представляют собой установленный принтер, отключает расширение ppd, игнорирует ppp VMware, включенную на большое количество серверов VMware (если вам это не нужно, просто удалите |grep -v VMware ), а остальные имена — на xargs , что не позволяет все принтеры.
Задача cron должна сделать эту работу хорошо.
Если проблема сводится к тому, что графический интерфейс требует входа в систему для возобновления работы принтера, то другим решением является разрешение возобновления работы принтера через графический интерфейс без входа в систему. Чтобы сделать это, выключите чашки и отредактируйте эту строку sudo vi /etc/cups/cupsd.conf :
И удалите директиву Resume-Printer , а затем перезапустите чашки. Если директива отображается в более чем одном разделе
, вы можете удалить ее из соответствующего кода
или удалить из всех. Теперь вы можете возобновить работу принтера без входа в GUI. Я видел это на macworld , но он применим к любым установкам чашек.
Я обновил cupsd.conf с помощью строки:
Ошибка отмены команды
Затем я перезапустил cupsd, используя: Перезапуск /etc/init.d/cups
Но когда я смотрю файл printers.conf, ErrorPolicy не обновляется. В соответствии с документацией чашек в разделе принтера должна появиться строка «Ошибка abc-job» ErrorPolicy.
Я также попытался с lpadmin обновить ErrorPolicy. Ничего не меняет ErrorPolicy или не попадает в файл printers.conf.
Что мне не хватает? Как я могу убедиться, что cupsd фактически отменяет задание при ошибке?
lpadmin -p p-go-avtom2 -v p-go-avtom2 -E
Ответ от Janne выше, например. это:
. приведет к перезапуску CUPS каждую минуту, независимо от того, в каком состоянии находится какой-либо принтер. Это связано с тем, что предложение перезапуска cups не сопряжено с & & amp ;.
Вот короткий скрипт BASH, который я использовал для перезапуска CUPS при обнаружении состояния сбоя.
Замените «DS40» на любой принтер, который вы ищете, и «отключен» с любыми выводами lpstat -p на вашем языке.
Куча решений здесь не работала для меня (например, sudo cupsenable и lpadmin -E).
Если вы используете Debian 8.6, Cinnamon 2.2.16 (Linux) сделайте это в меню запуска графического интерфейса пользователя:
Для Ubuntu 16.04:
Откроется средство устранения неполадок печати. Он расскажет вам, что делать дальше.
Вероятно, вам просто нужно проверить свойство Enabled для вашего принтера CUPS в настройках печати. (Сначала вам нужно разблокировать).
Наконец, чтобы это не повторилось, измените политику «принтеры» на «повторное задание» в описанной выше настройке принтера (в соответствии с политиками свойств).
Исправлено это для меня!
Что вызывает эту проблему: Если мой принтер wifi отключен, когда я печатаю на CUPS PRINTER, а моя политика — «остановить принтер», тогда я получаю сообщение, которое я не мог распечатать и принтер отключен (Enabled не установлен). Только если для параметра политики задано «повторное задание», значение «Включено» не будет отменено. Через несколько минут после того, как принтер будет включен, ваши задания начнут печатать.
(Мой другой сообщение о это.)
Как уже говорили другие, «cupsenable» или «lpadmin -E» должны делать трюк.
Связанная с этим проблема — это IIRC, которая по умолчанию CUPS настраивает принтер таким образом, что если печать задания терпит неудачу, принтер отключается. Вы можете изменить это, чтобы прервать работу вместо этого.
Источник