Как возобновить работу 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 настраивает принтер таким образом, что если печать задания терпит неудачу, принтер отключается. Вы можете изменить это, чтобы прервать работу вместо этого.
Источник
Как возобновить работу принтера CUPS из командной строки?
У меня есть принтер в CUPS, который из-за проблем с драйверами (HP 1010) время от времени переходит в паузу.
Я хотел бы написать сценарий оболочки, который будет выполняться раз в час, чтобы возобновить работу принтера в CUPS. Но я не знаю после нескольких минут поиска, как возобновить работу принтера из командной строки оболочки.
Есть команда cusenable.
запускает отключенный принтер (чтобы узнать имя принтера, вы можете перечислить свои принтеры с помощью 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 (ту, от которой вы хотите избавиться в соответствии с вашим вопросом).
Кроме того, вы можете установить отдельные ErrorPolicies для каждой отдельной очереди печати. Этот параметр будет указан в файле 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 секунд. Задание не теряется при выключении принтера. Вы можете намеренно задержать печать, просто выключив принтер. Хорошая конфигурация для настольных принтеров и / или домашних пользователей.
В целом, нет необходимости возиться с Баш сценариев, хрон рабочих мест, lpadmin , cupsenable или sudo для того , чтобы повторно активировать CUPS очереди спускаясь хаотично.
Источник
Операционные системы Astra Linux
Оперативные обновления и методические указания
Операционные системы Astra Linux предназначены для применения в составе информационных (автоматизированных) систем в целях обработки и защиты 1) информации любой категории доступа 2) : общедоступной информации, а также информации, доступ к которой ограничен федеральными законами (информации ограниченного доступа).
1) от несанкционированного доступа;
2) в соответствии с Федеральным законом от 27.07.2006 № 149-ФЗ «Об информации, информационных технологиях и о защите информации» (статья 5, пункт 2).
Операционные системы Astra Linux Common Edition и Astra Linux Special Edition разработаны коллективом открытого акционерного общества «Научно-производственное объединение Русские базовые информационные технологии» и основаны на свободном программном обеспечении. С 17 декабря 2019 года правообладателем, разработчиком и производителем операционной системы специального назначения «Astra Linux Special Edition» является ООО «РусБИТех-Астра».
На web-сайтах https://astralinux.ru/ и https://wiki.astralinux.ru представлена подробная информация о разработанных операционных системах семейства Astra Linux, а также техническая документация для пользователей операционных систем и разработчиков программного обеспечения.
Мы будем признательны Вам за вопросы и предложения, которые позволят совершенствовать наши изделия в Ваших интересах и адаптировать их под решаемые Вами задачи!
Репозитория открытого доступа в сети Интернет для операционной системы Astra Linux Special Edition нет. Операционная система распространяется посредством DVD-дисков.
Информацию о сетевых репозиториях операционной системы Astra Linux Common Edition Вы можете получить в статье Подключение репозиториев с пакетами в ОС Astra Linux и установка пакетов.
В целях обеспечения соответствия сертифицированных операционных систем Astra Linux Special Edition требованиям, предъявляемым к безопасности информации, ООО «РусБИтех-Астра» осуществляет выпуск очередных и оперативных обновлений.
Очередные обновления (версии) предназначены для:
- реализации и совершенствования функциональных возможностей;
- поддержки современного оборудования;
- обеспечения соответствия актуальным требованиям безопасности информации;
- повышения удобства использования, управления компонентами и другие.
Оперативные обновления предназначены для оперативного устранения уязвимостей в экземплярах, находящихся в эксплуатации, и представляют собой бюллетень безопасности, который доступен в виде:
- инструкций и методических указаний по настройке и особенностям эксплуатации ОС, содержащих сведения о компенсирующих мерах или ограничениях по примене- нию ОС при эксплуатации;
- отдельных программных компонентов из состава ОС, в которые внесены изменения с целью устранения уязвимостей, инструкций по их установке и настройке, а также информации, содержащей сведения о контрольных суммах всех файлов оперативного обновления;
- обновлений безопасности, представляющих собой файл с совокупностью программных компонентов из состава ОС, в которые внесены изменения с целью устранения уязвимостей, а также информации, содержащей сведения о контрольных суммах всех файлов обновлений безопасности, указания по установке, настройке и особенностям эксплуатации ОС с установленными обновлениями безопасности.
Ввиду совершенствования нормативно-правовых документов в области защиты информации и в целях обеспечения соответствия информационных актуальным требованиям безопасности информации, а также обеспечения их долговременной эксплуатации, в том числе работоспособности на современных средствах вычислительной техники, рекомендуется на регулярной основе планировать проведение мероприятий по применению очередных и оперативных обновлений операционной системы.
Источник