Mam drukarkę w CUPS, która z powodu problemów ze sterownikiem (HP 1010) od czasu do czasu się zatrzymuje.
Chciałbym napisać skrypt powłoki, który będzie wykonywany raz na godzinę, aby wznowić drukarkę w CUPS. Ale po kilku minutach Google nie mam pojęcia, jak wznowić drukarkę z wiersza poleceń powłoki.
Odpowiedzi:
Istnieje polecenie, które można ustawić jako cupsenable.
cupsenable printer
uruchamia wyłączoną drukarkę (aby znaleźć nazwę drukarki, możesz wyświetlić listę drukarek za pomocą
lpstat -p
lublpc status
).Może być konieczne uruchomienie polecenia jako root lub sudo. Więc jeśli musisz włączyć drukarkę w skrypcie powłoki, musisz dodać powłokę do crontab roota lub edytować plik sudoers.
źródło
Twój problem można rozwiązać na różne sposoby, w zależności od używanej wersji CUPS.
Więcej najnowsze wersje CUPS (wersja 1.2 i wyżej) pochodzą z wbudowanym funkcjonalności, które mogą pomóc tutaj. Nazywa się to „ErrorPolicy”. Domyślne ustawienie jest wybrane w cupd.conf i określa, jak cupd powinien obsługiwać kolejki wydruku, które nie zachowują się zgodnie z oczekiwaniami. Masz 3 opcje do przypisania do każdej kolejki osobno:
Wyjaśnienie:
abort-job
- Przerwij to zadanie i przejdź do następnego zadania w tej samej kolejce
retry-job
- Retry to praca po odczekaniu N sekund (gdzie N jest określana przez cupsd.conf „s«JobRetryInterval»dyrektywy).
retry-this-job
- Ponów bieżącą pracę natychmiast i na czas nieokreślony.
stop-printer
- Zatrzymaj bieżącą kolejkę drukowania i zachowaj zadanie do przyszłego drukowania. Jest to nadal domyślne, chyba że zdefiniujesz inaczej zgodnie z wyżej wymienionymi alternatywami. Było to również domyślne + możliwe zachowanie tylko dla wszystkich kolejek we wcześniejszych wersjach CUPS (tego, którego chcesz się pozbyć zgodnie z pytaniem).
Ponadto można ustawić indywidualne ErrorPolicies dla każdej osobnej kolejki wydruku. To ustawienie zostanie odnotowane w pliku printers.conf. (Ustaw z wiersza poleceń za pomocą
lpadmin -p printername -o printer-error-policy=retry-this-job
).W przypadku starszych wersji CUPS polecam zajrzeć
beh
do CUPS BackEnd Handler .beh
to opakowanie, które można zastosować do dowolnego backendu CUPS.Zakładając, że twoja kolejka wydruku ma zdefiniowane zaplecze
socket://192.168.1.111:9100
i zachowuje się w sposób, który Ci się nie podoba (od czasu do czasu wyłączany przez cupd z powodu problemów z połączeniem sieciowym). Pobeh
ponownym zdefiniowaniu backendu w ten sposób:Spowodowałoby to ponowienie próby 20 razy w dwuminutowych odstępach i wyłączenie kolejki tylko wtedy, gdy nadal się nie powiedzie. Lub możesz to zrobić:
Spowoduje to powtórzenie zadania 3 razy z 5-sekundowymi opóźnieniami między próbami. Jeśli zadanie nadal nie powiedzie się, zostanie odrzucone, ale kolejka nie zostanie wyłączona. Chcesz pozwolić cupd spróbować na czas nieokreślony połączyć się z urządzeniem? Dobrze, spróbuj tego:
Spróbuj nieskończenie, aż drukarka wróci. Interwały między próbami połączenia wynoszą 30 sekund. Zadanie nie ginie po wyłączeniu drukarki. Możesz celowo opóźnić drukowanie, po prostu wyłączając drukarkę. Dobra konfiguracja dla drukarek stacjonarnych i / lub użytkowników domowych.
Ogólnie rzecz biorąc, nie ma potrzeby, żeby poeksperymentować z skryptach bash crona,
lpadmin
,cupsenable
lubsudo
w celu ponownej aktywacji CUPS kolejki schodząc chaotycznie.źródło
JobRetryInterval 58
spróbować co 58 sekund. Inne możliwe wartości to1w
(1 tydzień),3d
(3 dni),7h
(7 godzin) lub4m
(4 minuty).cupsd.conf
parametry do CUPS v1.7 są udokumentowane tutaj: http://www.cups.org/documentation.php/doc-1.7/ref-cupsd-conf.html . Sprawdź adnotacje dla każdego parametru na prawej krawędzi strony: powie ci, która wersja CUPS jako pierwsza go obsługiwała. Miłego odkrywania bardziej przydatnych parametrów! :-)-E
Opcja drukarka stosowaćlpadmin
należy zrobić. Prawdopodobnie możesz po prostu utworzyć zadanie cron za pomocąlpadmin
polecenia.cron
Wejście godzinowe :Możesz to dodać, uruchamiając:
Upewnij się, że dodajesz
-E
po nazwie drukarki, ponieważ jest to opcja drukarki, a nie opcja lpadmin. Zwróć uwagę na następujący fragmentman lpadmin
strony wskazany w komentarzu poniżej:źródło
error-policy
Nie wszystko naprawić.cupsenable
nic nie naprawia. Tylkolpadmin
dla mnie.Moja drukarka to HP CP1215 również miał błąd: Drukarka wstrzymana - „ Błąd / usr / lib / cups / backend / hp”
Po ponownym uruchomieniu obu
cups
iavahi-daemon
i identyfikacji drukarkęlpstat -p
i umożliwienie zecupsenable
byłem w stanie wydrukować ponownie. Tylko ponowne uruchomieniecups
i włączenie nie rozwiązało problemu.Zmieniłem również domyślne zasady na ponawianie próby i ostatecznie uniknąłem błędów w przyszłości z cronjob:
gdzie
poissa käytöstä
jest fiński tekst lokalizacji do konserwacji „zepsuty” iHP_Tuloostin
nazwa mojej drukarki.Z mojego doświadczenia wynika, że zarówno domyślne zasady, jak i bieżące zasady dotyczące drukarek powinny być skonfigurowane tak, aby były ponownym zadaniem. Domyślna zasada to tylko zasada, którą otrzymujesz podczas instalowania nowej drukarki.
źródło
Zawiera listę wszystkich plików ppd, które reprezentują zainstalowaną drukarkę, odcina rozszerzenie ppd, ignoruje ppd VMware znajdujące się na wielu serwerach VMware (jeśli nie potrzebujesz tego po prostu usuń
|grep -v VMware
) i przekazuje inne nazwy, naxargs
które wstrzymuje wszystkie drukarki.Zadanie crona powinno sprawić, że będzie dobrze.
źródło
Jeśli problem polega na tym, że GUI wymaga zalogowania się, aby wznowić drukarkę, innym rozwiązaniem jest umożliwienie wznowienia drukarki za pomocą GUI bez logowania. Aby to zrobić, wyłącz kubki i edytuj ten wiersz
sudo vi /etc/cups/cupsd.conf
:I usuń
Resume-Printer
dyrektywę, a następnie ponownie uruchom kubki. Jeśli dyrektywa pojawia się w więcej niż jednej<Limit>
sekcji, możesz ją usunąć z odpowiedniej<Policy>
sekcji lub usunąć ze wszystkich. Powinieneś być teraz w stanie wznowić drukarkę bez logowania z GUI. Widziałem to na macworld, ale dotyczy to każdej instalacji kubków.źródło
Odpowiedź od Janne powyżej, np .:
... spowoduje, że CUPS będzie uruchamiany co minutę, bez względu na stan jakiejkolwiek drukarki. To dlatego, że klauzula restartu filiżanek nie jest sparowana z &&.
Oto krótki skrypt BASH, którego użyłem, aby uzależnić restart CUPS od wykrycia stanu awarii.
Zamień „DS40” na dowolną drukarkę, dla której szukasz statusu, a „wyłączone” na dowolne wyjście lpstat -p w twoim języku.
źródło
Zaktualizowałem cupdd.conf z linią:
ErrorPolicy abort-job
Następnie zrestartowałem cupd przy użyciu: /etc/init.d/cups restart
Ale kiedy patrzę na plik printers.conf, ErrorPolicy nie jest aktualizowany. Zgodnie z dokumentacją kubków w sekcji drukarki musi pojawić się wiersz „BłądPolicy przerwania zadania”.
Próbowałem też z lpadmin, aby zaktualizować ErrorPolicy. Nic nie zmienia ErrorPolicy lub nie przechodzi do pliku printers.conf.
czego mi brakuje? Jak upewnić się, że cupd faktycznie przerywa pracę po błędzie?
źródło
lpadmin -p p-go-avtom2 -v p-go-avtom2 -E
Źródło
źródło
Kilka rozwiązań tutaj nie działało dla mnie (np. Sudo cupsenable i lpadmin -E).
Jeśli używasz Debiana 8.6, Cinnamon 2.2.16 (Linux), zrób to z menu startowego GUI:
W przypadku Ubuntu 16.04:
Spowoduje to otwarcie narzędzia do rozwiązywania problemów z drukowaniem. Powie ci, co robić dalej.
Prawdopodobnie będziesz musiał po prostu sprawdzić właściwość Włączone dla drukarki CUPS w Ustawieniach drukowania. (Najpierw musisz odblokować).
Na koniec, aby uniknąć tego powtórzenia, zmień „zasady” drukarek na „ponów zadanie” w konfiguracji drukarki wspomnianej powyżej (w obszarze właściwości | zasady).
Naprawiłem to dla mnie!
Co powoduje ten problem: jeśli moja drukarka Wi-Fi jest wyłączona podczas drukowania na DRUKARCE CUPS, a moją zasadą jest „zatrzymaj drukarkę”, to pojawia się komunikat, że nie mogłem wydrukować, a drukarka jest wyłączona (opcja Włączona nie jest zaznaczona) . Tylko jeśli zasada jest ustawiona na „ponów zadanie”, opcja Włączone nie będzie odznaczona. Kilka minut po ponownym uruchomieniu drukarki zadania zaczną się drukować.
(Mój drugi post na ten temat.)
źródło
Musiałem poradzić sobie z tymi samymi nonsensami CUPS tutaj ... Rozwiązaniem dla mnie był systemowy skrypt, który działa co n minut.
/usr/local/cups/enable_cups_printers.sh
cups.enable.printers.service
cups.enable.printers.timer
źródło
Jak już powiedzieli inni, „cupsenable” lub „lpadmin -E” powinny załatwić sprawę.
Powiązanym problemem jest IIRC, który domyślnie CUPS konfiguruje drukarkę tak, że jeśli drukowanie zadania się nie powiedzie, drukarka zostanie wyłączona. Możesz to zmienić, aby zamiast tego przerwać zadanie.
źródło