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

Hoe kan ik CUPS printer hervatten vanaf de opdrachtregel?

Ik heb een printer in CUPS die door driver problemen (HP 1010) van tijd tot tijd in pauze gaat.

Ik wil een shellscript schrijven dat eenmaal per uur wordt uitgevoerd om een printer in CUPS te hervatten. Maar ik heb geen idee na een paar minuten googlen hoe ik een printer kan hervatten vanaf de commandoregel.

Antwoorden (9)

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

Er is het commando cupsenable.

cupsenable printer

start een uitgeschakelde printer (om de printernaam te achterhalen kun je je printers opnoemen met lpstat -p of lpc status).

Het kan zijn dat je het commando als root of via sudo moet uitvoeren. Dus als je de printer moet inschakelen in een shellscript, moet je de shell toevoegen aan root’s crontab, of je sudoers-bestand bewerken.

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

Mijn printer is HP CP1215 had ook een fout: Printer Paused - “/usr/lib/cups/backend/hp failed” ](https://bbs.archlinux.org/viewtopic.php?id=85454)

Na het herstarten van zowel cups als avahi-daemon en het identificeren van printer met lpstat -p en het inschakelen met cupsenable, was ik in staat om weer af te drukken. Alleen opnieuw opstarten met cups en inschakelen deed de truc niet.

Ik veranderde ook de standaard policy in retry-job en uiteindelijk kon ik fouten in de toekomst voorkomen met cronjob:

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

waarbij poissa käytöstä de Finse lokalisatietekst is voor onderhoud “out of order” en HP_Tuloostin de naam van mijn printer.

In mijn ervaring moeten zowel default-policy als het huidige printerbeleid worden geconfigureerd als retry-job. Default-policy is gewoon de policy die je krijgt als je een nieuwe printer installeert.

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

Dit geeft een lijst van alle ppd-bestanden die een geïnstalleerde printer vertegenwoordigen, knipt de ppd-extensie eraf, negeert een VMware ppd die op veel VMware-servers staat (als je dit niet nodig hebt, verwijder je gewoon |grep -v VMware), en geeft de andere namen door aan xargs die alle printers de pauzestand geeft.

Een crontaak zou dit goed moeten laten werken.

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

Als het probleem ligt in het feit dat de GUI een login vereist om de printer te hervatten, dan is een andere oplossing om het hervatten van de printer via de GUI mogelijk te maken zonder een login. Om dit te doen sluit Kopers af en wijzig deze regel 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>

En verwijder de Resume-Printer directief, herstart dan cups. Als de directive op meer dan een <Limit> sectie voorkomt dan kun je hem verwijderen van de relevante <Policy> sectie of verwijderen van allemaal. Je zou nu in staat moeten zijn om de printer te hervatten zonder een login vanuit de GUI. Ik zag dit op macworld maar het geldt voor elke cups installatie.

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

Het antwoord van Janne hierboven, bijvoorbeeld dit:

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

… zal ervoor zorgen dat CUPS elke minuut opnieuw wordt opgestart, ongeacht in welke staat een printer zich bevindt. Dat komt omdat de kopjes herstart-clausule niet gekoppeld is aan de &&.

Hier is een kort BASH script dat ik gebruikte om het herstarten van CUPS voorwaardelijk te maken bij het detecteren van een fouttoestand.

#!/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

Vervang “DS40” door welke printer dan ook waarvan je de status wilt weten, en “disabled” door wat lpstat -p in jouw taal ook weergeeft.

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

Een aantal van de oplossingen hier werkten niet voor mij, (bv. sudo cupsenable en lpadmin -E).

Als je Debian 8.6, Cinnamon 2.2.16 (Linux) gebruikt, doe dit dan vanuit je GUI start menu:

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.

Voor Ubuntu 16.04:

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

Dit opent de probleemoplosser voor afdrukken. Het zal je vertellen wat je nu moet doen.

Waarschijnlijk moet je gewoon de Enabled eigenschap voor je CUPS printer controleren in je Print Settings. (Je zult eerst moeten ontgrendelen).

Ten slotte, om te voorkomen dat dit weer gebeurt, verander de printers “policy” in “retry-job” in de printer setup hierboven genoemd (onder properties | policies).

Dat heeft het voor mij opgelost!

Wat veroorzaakt dit probleem: Als mijn wifi printer is uitgeschakeld als ik print naar een CUPS PRINTER, en mijn policy is “stop printer”, dan krijg ik een melding dat ik niet kon printen en de printer is uitgeschakeld (Enabled is unchecked). Alleen als de policy is ingesteld op “retry job” staat Enabled niet uitgevinkt. Een paar minuten nadat de printer weer is ingeschakeld, beginnen de taken af te drukken.

(Mijn andere bericht hierover).

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

Ik had hier met dezelfde CUPS onzin te maken… De oplossing voor mij was een systemd script dat elke n minuten draait.

/usr/local/cups/enable_cups_printers.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 Bron

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

Zoals anderen al hebben gezegd, zou ‘cupsenable’ of ‘lpadmin -E’ de truc moeten doen.

Een verwant probleem is IIRC dat CUPS standaard de printer zo configureert dat als het afdrukken van een opdracht op een of andere manier mislukt, de printer wordt uitgeschakeld. U kunt dit veranderen om de opdracht af te breken.