Введение в печать через командную строку

Многие пользователи Linux предпочитают графический интерфейс для настройки периферии, однако терминал часто оказывается более надежным инструментом, особенно при работе со сложными сетевыми конфигурациями или устаревшим оборудованием. Прямое управление через консоль позволяет избежать проблем совместимости, которые иногда возникают в автоматических утилитах настройки.

Система печати в большинстве современных дистрибутивов базируется на комплексе CUPS (Common Unix Printing System), который предоставляет гибкий API для добавления принтеров, управления очередями и настройки драйверов. Использование командной строки дает администратору прямой доступ к конфигурационным файлам и логам, что критически важно для диагностики ошибок.

В этой статье мы разберем, как вручную установить принтер, используя только консольные утилиты, такие как lpadmin и lpoptions. Вы научитесь подключать как локальные USB-устройства, так и сетевые принтеры с различными протоколами передачи данных.

Подготовка системы и установка драйверов

Первым шагом является обеспечение наличия необходимых пакетов. В большинстве дистрибутивов сервер печати CUPS уже установлен, но для корректной работы с конкретным оборудованием могут потребоваться дополнительные драйверы. Убедитесь, что у вас есть права root или доступ через sudo, так как большинство команд требуют привилегированного доступа.

Для подключения принтера необходимо установить пакет драйверов, соответствующий вашей модели. Например, для устройств HP часто требуется пакет hplip, а для принтеров Epsonprinter-driver-escpr. В системах на базе Debian или Ubuntu это можно сделать одной командой:

sudo apt update && sudo apt install cups cups-client hplip printer-driver-escpr

Важно отметить, что выбор драйвера зависит не только от бренда, но и от конкретного чипсета внутри устройства. Иногда достаточно универсального драйвера driverless (AirPrint), если принтер поддерживает современные протоколы, но для старых моделей gutenprint может быть единственным решением.

⚠️ Внимание: Неправильно подобранный драйвер может привести к тому, что устройство будет определяться системой, но не сможет печатать корректно, выдавая пустые листы или символы вместо текста. Всегда сверяйте модель устройства с официальным списком поддерживаемых драйверов на сайте производителя.

☑️ Подготовка окружения

Выполнено: 0 / 4

Проверка доступных устройств и портов

Прежде чем добавлять принтер в систему, необходимо убедиться, что операционная система видит его физически. Для этого используется команда lpinfo, которая выводит список доступных портов и сетевых устройств. Это критически важный этап для диагностики проблем подключения.

Запустите следующую команду, чтобы увидеть все подключенные устройства, включая USB и сетевые принтеры:

lpinfo -v

В зависимости от типа подключения, вы увидите строки, начинающиеся с direct usb для локальных устройств или socket, ipp, http для сетевых. Например, USB-принтер может отображаться как direct usb://HP/LaserJet-Pro-M203dn?serial=.. . Если устройство не отображается, проверьте физический кабель или настройки сетевой доступности.

Для сетевых принтеров полезно использовать утилиту nmap или функции сканирования внутри cupsctl, чтобы найти IP-адрес устройства в локальной сети. Иногда автоматическое обнаружение отключено в конфигурации CUPS, и адрес придется указывать вручную.

Что делать, если устройство не видно в lpinfo -v?

Возможно, служба CUPS не запущена, или модуль USB заблокирован. Попробуйте перезапустить службу командой sudo systemctl restart cups и проверьте подключение кабеля или настройки Wi-Fi роутера.

📊 Как вы обычно подключаете принтер?
USB-кабель
Локальная сеть (Ethernet)
Беспроводная сеть (Wi-Fi)
Сетевой шлюз (IPP)

Добавление принтера в CUPS через lpadmin

Основным инструментом для добавления принтеров в терминале является утилита lpadmin. Она позволяет создать очередь печати, привязать её к конкретному порту и назначить драйвер. Синтаксис команды может показаться сложным, но он достаточно логичен после разбора аргументов.

Для создания новой очереди печати используйте флаг -p для имени принтера, -v для URI устройства и -m для модели (PPD файла). Пример добавления сетевого принтера с именем OfficePrinter:

sudo lpadmin -p OfficePrinter -v socket://192.168.1.50 -m drv:///sample.drv/generic.ppd

Убедитесь, что имя принтера создается без пробелов и специальных символов, так как это может вызвать ошибки в скриптах или при отправке заданий на печать. URI устройства должно точно соответствовать тому, что вы видели в выводе lpinfo -v. Если вы используете сетевой принтер, протокол socket (порт 9100) является самым быстрым, но ipp или http поддерживают более расширенный функционал, включая отчеты о состоянии.

После создания очереди обязательно включите её и сделайте устройством по умолчанию, чтобы не указывать имя принтера при каждой печати.

sudo cupsenable OfficePrinter

sudo cupsaccept OfficePrinter

lpoptions -d OfficePrinter

💡

Имя очереди печати должно быть уникальным и латиницей, а URI устройства должно точно совпадать с адресом, который система видит через lpinfo -v.

⚠️ Внимание: Если вы используете проприетарный драйвер, который не находится в стандартном репозитории, вам нужно сначала скачать PPD-файл на диск и указать путь к нему в команде lpadmin через флаг -m, например: -m /usr/share/cups/model/my-driver.ppd.

Настройка сетевых протоколов и безопасности

При работе с сетевыми принтерами важно понимать разницу между протоколами передачи данных. IPP (Internet Printing Protocol) является современным стандартом, поддерживающим шифрование и аутентификацию, тогда как старый Socket (Raw) работает быстрее, но не передает статусы устройства в реальном времени.

Для настройки принтера с поддержкой IPP используйте URI вида ipp://192.168.1.50/ipp/print. Если принтер требует пароль или логин, их можно встроить в URI, но это не рекомендуется из соображений безопасности. Лучше настроить права доступа через конфигурационный файл cupsd.conf.

В разделе конфигурации CUPS можно ограничить доступ к принтеру только определенным подсетям или пользователям Linux. Это особенно актуально в корпоративных сетях, где печать должна быть доступна только сотрудникам конкретного отдела. Используйте команды lpadmin -p ИМЯ -o device-uri=.. для более тонкой настройки параметров.

Для принтеров HP с сетевым интерфейсом часто требуется активация протокола SNMP для корректного отображения уровня тонера. Это можно сделать дополнительными флагами при установке:

sudo lpadmin -p HP_Printer -v socket://192.168.1.50 -m hplip-hp-laserjet.pro.ppd -o SNMP=true
Протокол URI-шаблон Особенности
Socket (Raw) socket://IP:9100 Высокая скорость, минимум служебных данных
IPP ipp://IP/ipp/print Поддержка статусов, очереди, шифрование
LPD lpd://IP/queue Устаревший, совместимость со старыми сетями
USB direct usb://.. Прямое подключение, требует физического присутствия
💡

Если вы меняете IP-адрес сетевого принтера, не забудьте обновить URI в команде lpadmin или изменить запись в /etc/cups/printers.conf, иначе задания печати будут уходить в тупик.

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

После установки принтера может потребоваться управление очередью печати: просмотр статуса, удаление застрявших заданий или изменение приоритетов. Для этих целей служат команды lpstat, cancel и requeue. Команда lpstat -t покажет полную сводку по всем принтерам и текущим заданиям.

Если печать не работает, проверьте лог CUPS. Логи находятся в /var/log/cups/error_log. Для просмотра последних записей в реальном времени используйте tail -f:

sudo tail -f /var/log/cups/error_log

Частой проблемой является отсутствие прав доступа к порту USB или блокировка сетевых запросов фаерволом. Убедитесь, что порт 631 (CUPS) открыт для входящих соединений, если вы настраиваете печать по сети, и что группа lp имеет доступ к устройству.

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

💡

Логи в /var/log/cups/error_log — это основной источник информации при диагностике ошибок печати, всегда проверяйте их перед переустановкой драйверов.

Удаление принтера и очистка системы

Иногда необходимо удалить принтер из системы, если он сломался или был заменен на новую модель. Для этого используется флаг -x в утилите lpadmin. Это действие удалит очередь печати и все связанные с ней настройки.

sudo lpadmin -x ИмяПринтера

После удаления принтера рекомендуется проверить, не осталось ли "призрачных" файлов конфигурации или заданий в очереди. Команда lpstat -o покажет все ожидающие задания, даже если принтер удален. Их можно очистить командой cancel -a.

Если вы планируете переустановку драйверов, полезно также очистить кэш PPD файлов и временные файлы CUPS, чтобы избежать конфликтов версий. Это особенно актуально при обновлении дистрибутива или переходе на новую версию CUPS.

⚠️ Внимание: При удалении принтера через lpadmin -x все текущие задания в очереди для этого устройства будут потеряны безвозвратно, поэтому убедитесь, что они не нужны, прежде чем выполнять команду.

Сводная таблица основных команд

Для быстрого доступа к основным операциям предлагаем вам таблицу с наиболее полезными командами. Сохраните её в заметках, чтобы не пришлось искать синтаксис каждый раз при настройке нового оборудования.

Действие Команда Описание
Список принтеров lpstat -p Показать статус всех подключенных принтеров
Список устройств lpinfo -v Показать все доступные порты и устройства
Добавить принтер lpadmin -p NAME -v URI -m MODEL Создать новую очередь печати
Удалить принтер lpadmin -x NAME Полностью удалить принтер и настройки
Печать файла lp -d NAME file.pdf Отправить файл на печать на указанный принтер

Часто задаваемые вопросы (FAQ)

Как узнать точное имя модели принтера для драйвера?

Используйте команду lpinfo -m, чтобы вывести список всех доступных драйверов. Вы можете фильтровать вывод по названию бренда, например: lpinfo -m | grep -i hp. Также имя модели часто указано на физической наклейке устройства или в инструкции.

Почему принтер добавился, но печатает пустые страницы?

Это чаще всего означает, что выбран неправильный драйвер или не установлен фильтр конвертации данных. Попробуйте сменить модель в команде lpadmin на более универсальную (например, generic или driverless) или переустановить пакеты драйверов, соответствующие вашей модели.

Можно ли настроить печать без прав root?

Без прав root вы можете только отправлять задания на уже установленные принтеры. Для добавления, удаления или изменения настроек принтера (через lpadmin или cupsctl) необходимы права суперпользователя (sudo).

Как отправить файл на печать без открытия GUI?

Используйте команду lp или lpr. Например: lp -d ИмяПринтера document.pdf. Если принтер не указан, файл будет отправлен на принтер по умолчанию.

Что делать, если CUPS не запускается после установки?

Проверьте статус службы командой systemctl status cups. Если есть ошибки, просмотрите логи journalctl -u cups. Часто проблема решается переподключением USB или проверкой конфликтов портов в сетевых настройках.