2010-03-03 13:25:43 +0000 2010-03-03 13:25:43 +0000
47
47

Jak wznowić działanie drukarki CUPS z linii poleceń?

Mam drukarkę w CUPS, która z powodu problemów ze sterownikami (HP 1010) od czasu do czasu przechodzi w stan wstrzymania.

Chciałbym napisać skrypt powłoki, który będzie wykonywany raz na godzinę, aby wznowić drukarkę w CUPS. Ale nie mam pojęcia, po kilkuminutowym googlowaniu, jak wznowić drukarkę z linii poleceń powłoki.

Odpowiedzi (9)

68
68
68
2010-03-03 16:36:51 +0000

Jest jeszcze komenda cupsenable.

cupsenable printer

uruchamia wyłączoną drukarkę (aby poznać jej nazwę, możesz wyświetlić listę drukarek za pomocą lpstat -p lub lpc status).

Być może będziesz musiał uruchomić komendę jako root lub przez sudo. Więc jeśli musisz włączyć drukarkę w skrypcie powłoki, będziesz musiał dodać powłokę do crontabu roota, lub edytować plik sudoers.

6
6
6
2012-10-10 07:42:50 +0000

Moja drukarka to HP CP1215 miała również błąd: Printer Paused - “/usr/lib/cups/backend/hp failed” ](https://bbs.archlinux.org/viewtopic.php?id=85454)

Po ponownym uruchomieniu zarówno cups jak i avahi-daemon oraz zidentyfikowaniu drukarki za pomocą lpstat -p i włączeniu za pomocą cupsenable mogłem ponownie drukować. Ponowne uruchomienie tylko cups i włączenie nie pomogło.

Zmieniłem również domyślną politykę na retry-job i w końcu udało mi się uniknąć błędów w przyszłości dzięki cronjob:

* * * * * lpstat -p |grep "poissa käytöstä" && service avahi-daemon restart; service cups restart; cupsenable HP_Tuloostin

gdzie poissa käytöstä jest fińskim tekstem lokalizacyjnym dla konserwacji “out of order”, a HP_Tuloostin jest nazwą mojej drukarki.

Z mojego doświadczenia wynika, że zarówno domyślna polityka, jak i bieżąca polityka drukarki powinny być skonfigurowane jako retry-job. Default policy to po prostu polityka, którą otrzymujesz podczas instalacji nowej drukarki.

2
2
2
2014-01-27 18:33:06 +0000
ls /etc/cups/ppd/ |cut -d "." -f1 |grep -v VMware |xargs -i cupsenable {}

Wylistuje wszystkie pliki ppd, które reprezentują zainstalowane drukarki, obetnie rozszerzenie ppd, zignoruje ppd VMware zawarte w wielu serwerach VMware (jeśli tego nie potrzebujesz, po prostu usuń |grep -v VMware), a pozostałe nazwy przekaże do xargs, co spowoduje wyłączenie wszystkich drukarek.

Zadanie cron powinno sprawić, że będzie to dobrze działać.

1
1
1
2015-08-25 10:30:16 +0000

Jeśli problem wynika z faktu, że GUI wymaga logowania do wznowienia pracy drukarki, to innym rozwiązaniem jest umożliwienie wznowienia pracy drukarki przez GUI bez logowania. W tym celu należy wyłączyć cups i edytować linię sudo vi /etc/cups/cupsd.conf:

<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel- Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>

I usuń dyrektywę Resume-Printer, a następnie uruchom ponownie cups. Jeśli dyrektywa pojawia się w więcej niż jednej sekcji <Limit>, możesz usunąć ją z odpowiedniej sekcji <Policy> lub usunąć ze wszystkich. Powinieneś teraz być w stanie wznowić pracę drukarki bez logowania z GUI. Widziałem to na macworld , ale ma to zastosowanie do każdej instalacji cups.

1
1
1
2015-09-07 12:14:32 +0000

Odpowiedź od Janne powyżej, np. to:

* * * * * lpstat -p |grep "poissa käytöstä" && service avahi-daemon restart; service cups restart; cupsenable HP_Tuloostin

… spowoduje, że CUPS będzie restartowany co minutę, niezależnie od tego, w jakim stanie jest jakakolwiek drukarka. Dzieje się tak dlatego, że klauzula cups restart nie jest połączona z &&.

Oto krótki skrypt BASH, którego użyłem, aby uzależnić ponowne uruchomienie CUPS od wykrycia stanu awarii.

#!/bin/bash

DATE=$(date)
DS40=$(/usr/bin/lpstat -p |grep "DS40" |grep "disabled")

if [! -z "${DS40}"]; then
    echo "${DATE} - Restarted avahi and cups" >> /var/log/cups/restart-cron-tim.log
    /usr/sbin/service avahi-daemon restart
    /usr/sbin/service cups restart
    /usr/sbin/cupsenable Dai_Nippon_Printing_DS40
fi

Zamień “DS40” na dowolną drukarkę, której stanu szukasz, a “disabled” na to, co lpstat -p wypisuje w twoim języku.

0
0
0
2016-10-08 23:57:22 +0000

Kilka z podanych tutaj rozwiązań nie zadziałało w moim przypadku (np. sudo cupsenable i lpadmin -E).

Jeśli używasz Debiana 8.6, Cinnamona 2.2.16 (Linux) zrób to z menu startowego GUI:

Click Administration | Print Settings,
Then select your stalled CUPS printer,
Click Unlock (and give it your admin password),
Click Server | Settings,
In this click the blue "Problems?" link.

Dla Ubuntu 16.04:

Click System Settings | Printers,
Then Server | Settings,
Click the blue "Problems?" link.

To otwiera narzędzie do rozwiązywania problemów z drukowaniem. Powie ci, co robić dalej.

Prawdopodobnie będziesz musiał po prostu sprawdzić właściwość Enabled dla swojej drukarki CUPS w ustawieniach drukowania. (Najpierw trzeba będzie odblokować).

Na koniec, aby uniknąć powtórzenia się tego problemu, zmień “politykę” drukarki na “retry-job” w konfiguracji drukarki wspomnianej powyżej (we właściwościach | polityce).

Naprawił to dla mnie!

Co powoduje ten problem: Jeśli moja drukarka wifi jest wyłączona, gdy drukuję na drukarce CUPS, a moja polityka to “zatrzymaj drukarkę”, wtedy dostaję komunikat, że nie mogłem drukować i drukarka jest wyłączona (Enabled jest odznaczone). Tylko jeśli polityka jest ustawiona na “retry job”, Enabled nie będzie odznaczone. Kilka minut po ponownym włączeniu drukarki Twoje zadania zaczną się drukować.

(Mój inny post na ten temat).

0
0
0
2018-11-03 18:15:11 +0000

Miałem do czynienia z tym samym nonsensem CUPS tutaj… Rozwiązaniem dla mnie był skrypt systemd, który uruchamia się co n minut.

/usr/local/cups/enablecupsprinters.sh

#!/bin/sh
for printer in $(lpstat -v | perl -pe 's/device for ([A-Za-z0-9_]+):.*//g')
do
    echo "Forcely enabling printer: $printer"
    # Enable:-E PrinterId:-p
    /usr/bin/lpadmin -E -p "$printer"
done

cups.enable.printers.service

[Unit]
Description = Forcely enable printer occassionally. Why CUPS disables printers in the first place has yet to be determined.

[Service]
Type = simple
ExecStart = /usr/local/cups/enable_cups_printers.sh

[Install]
WantedBy = multi-user.wants

cups.enable.printers.timer

[Unit]
Description=Run enable printers frequently to ensure connection difficulties are remedied.

[Timer]
OnBootSec=15min
OnUnitActiveSec=300

[Install]
WantedBy = timers.target
0
0
0
2012-02-13 10:28:39 +0000

lpadmin -p p-go-avtom2 -v p-go-avtom2 -E Źródło

-1
-1
-1
2010-04-12 11:16:08 +0000

Jak już powiedzieli inni, ‘cupsenable’ lub ‘lpadmin -E’ powinny załatwić sprawę.

Powiązaną kwestią jest to, że CUPS domyślnie konfiguruje drukarkę w taki sposób, że jeśli drukowanie zadania w jakiś sposób nie powiedzie się, drukarka jest wyłączana. Możesz to zmienić, aby zamiast tego przerwać zadanie.