Tengo una impresora en CUPS que debido a problemas con el controlador (HP 1010) de vez en cuando entra en pausa.
Me gustaría escribir un script de shell que se ejecutará una vez por hora para reanudar una impresora en CUPS. Pero no tengo idea después de buscar en Google durante un par de minutos cómo reanudar la impresora desde la línea de comandos del shell.
Respuestas:
Ahí está el comando cupsenable.
cupsenable printer
inicia una impresora deshabilitada (para averiguar el nombre de la impresora con la que puede enumerar sus impresoras
lpstat -p
olpc status
).Es posible que deba ejecutar el comando como root o mediante sudo. Entonces, si tiene que habilitar la impresora en un script de shell, deberá agregar el shell al crontab de la raíz o editar su archivo sudoers.
fuente
Su problema podría abordarse de diferentes maneras, dependiendo de la versión de CUPS que esté ejecutando.
Las versiones más recientes de CUPS (versión 1.2 y superior) vienen con una funcionalidad integrada que podría ayudar aquí. Se llama "ErrorPolicy". Su configuración predeterminada se selecciona en cupsd.conf y determina cómo cupsd debe manejar las colas de impresión que no se comportan como se esperaba. Tiene 3 opciones para etiquetar a cada cola individualmente:
Explicación:
abort-job
- Anule este trabajo y continúe con el siguiente trabajo en la misma cola
retry-job
- Vuelva a intentar este trabajo después de esperar N segundos (donde N está determinado por la directiva "JobRetryInterval" de cupsd.conf).
retry-this-job
- Vuelva a intentar el trabajo actual de forma inmediata e indefinida.
stop-printer
- Detenga la cola de impresión actual y conserve el trabajo para futuras impresiones. Este sigue siendo el valor predeterminado, a menos que defina lo contrario según las alternativas mencionadas anteriormente También era el comportamiento predeterminado + solo posible para todas las colas en versiones anteriores de CUPS (el que desea eliminar según su pregunta).
Además, puede configurar ErrorPolicies individuales para cada cola de impresión separada. Esta configuración se anotaría en el archivo printers.conf. (Configurarlo desde una línea de comandos con
lpadmin -p printername -o printer-error-policy=retry-this-job
).Para versiones anteriores de CUPS , recomendaría echar un vistazo al
beh
CUPS BackEnd Handler .beh
es un contenedor que se puede aplicar a cualquier back-end de CUPS.Asumiendo que su cola de impresión actualmente ha definido un back-end de
socket://192.168.1.111:9100
, y se comporta de la manera que no le gusta (siendo deshabilitado por cupsd de vez en cuando debido a problemas de conexión de red). Conbeh
usted redefiniría su backend así:Esto volvería a intentar un trabajo 20 veces en intervalos de dos minutos y deshabilitaría la cola solo cuando todavía no tenga éxito. O podrías hacer esto:
Esto vuelve a intentar el trabajo 3 veces con retrasos de 5 segundos entre los intentos. Si el trabajo aún falla, se descarta, pero la cola no está deshabilitada. ¿Desea dejar que cupsd intente conectarse indefinidamente al dispositivo? Bien, prueba esto:
Intente infinitamente hasta que vuelva la impresora. Los intervalos entre los intentos de conexión son de 30 segundos. El trabajo no se pierde cuando la impresora está apagada. Puede retrasar intencionalmente la impresión simplemente apagando la impresora. Una buena configuración para impresoras de escritorio y / o usuarios domésticos.
En general, no hay necesidad de perder el tiempo con scripts bash, trabajos de cron,
lpadmin
,cupsenable
osudo
con el fin de reactivar CUPS colas bajando de forma errática.fuente
JobRetryInterval 58
probar cada 58 segundos. Otros valores posibles son1w
(1 semana),3d
(3 días),7h
(7 horas) o4m
(4 minutos).cupsd.conf
parámetros posibles hasta CUPS v1.7 se documentan aquí: http://www.cups.org/documentation.php/doc-1.7/ref-cupsd-conf.html . Verifique las anotaciones para cada parámetro en el borde derecho de la página: le indicará qué versión de CUPS fue la primera en admitirlo. ¡Feliz descubrimiento de más parámetros útiles! :-)La
-E
opción de impresora utilizada conlpadmin
debería hacer eso. Probablemente pueda crear un trabajo cron con ellpadmin
comando.cron
Entrada por hora :Puede agregar eso ejecutando:
Asegúrese de agregar
-E
después del nombre de la impresora, porque es una opción de impresora aquí, no una opción lpadmin. Tenga en cuenta el siguiente extracto de laman lpadmin
página que se señaló en un comentario a continuación:fuente
error-policy
no arregla nada.cupsenable
No arregla nada. Solo lolpadmin
hace por mi.Mi impresora es HP CP1215 también tenía un error: Impresora en pausa - "/ usr / lib / cups / backend / hp falló"
Después de reiniciar ambas
cups
eavahi-daemon
identificar la impresoralpstat -p
y habilitarlacupsenable
, pude imprimir nuevamente. Reiniciar solocups
y habilitar no funcionó.También cambié la política predeterminada para volver a intentar el trabajo y finalmente terminé evitando errores en el futuro con cronjob:
donde
poissa käytöstä
está el texto de localización finlandés para mantenimiento "fuera de servicio" y elHP_Tuloostin
nombre de mi impresora.En mi experiencia, tanto la política predeterminada como las políticas actuales de la impresora deben configurarse para volver a intentar el trabajo. La política predeterminada es solo la política que obtiene cuando instala una nueva impresora.
fuente
Esto enumera todos los archivos ppd que representan una impresora instalada, corta la extensión ppd, ignora un ppd de VMware incluido en muchos servidores VMware (si no lo necesita, simplemente elimínelo
|grep -v VMware
) y pasa los otros nombres a losxargs
que deshace todos Las impresoras.Un trabajo cron debería hacer que esto funcione bien.
fuente
Si el problema se debe al hecho de que la GUI requiere un inicio de sesión para reanudar la impresora, entonces otra solución es permitir que la impresora se reanude a través de la GUI sin iniciar sesión. Para hacerlo, apague las tazas y edite esta línea
sudo vi /etc/cups/cupsd.conf
:Y elimine la
Resume-Printer
directiva, luego reinicie las tazas. Si la directiva aparece en más de una<Limit>
sección, puede eliminarla de la<Policy>
sección correspondiente o eliminarla de todas. Ahora debería poder reanudar la impresora sin iniciar sesión desde la GUI. Vi esto en macworld pero se aplica a cualquier instalación de tazas.fuente
La respuesta de Janne arriba, por ejemplo, esto:
... hará que CUPS se reinicie cada minuto, independientemente del estado en que se encuentre la impresora. Esto se debe a que la cláusula de reinicio de tazas no está emparejada con &&.
Aquí hay un breve script de BASH que utilicé para reiniciar CUPS condicional al detectar un estado de falla.
Reemplace "DS40" con cualquier impresora en la que esté buscando el estado y "deshabilitado" con cualquier salida lpstat -p en su idioma.
fuente
Actualicé cupsd.conf con la línea:
ErrorPolicy abort-job
Luego reinicé cupsd usando: /etc/init.d/cups restart
Pero cuando miro el archivo printers.conf, ErrorPolicy no se actualiza. De acuerdo con la documentación de cups, la línea "ErrorPolicy abort-job" debe aparecer en la sección de la impresora.
También intenté con lpadmin para actualizar ErrorPolicy. Nada cambia el ErrorPolicy o no llega al archivo printers.conf.
¿Qué me estoy perdiendo? ¿Cómo me aseguro de que cupsd realmente cancela un trabajo por error?
fuente
lpadmin -p p-go-avtom2 -v p-go-avtom2 -E
Fuente
fuente
Algunas de las soluciones aquí no funcionaron para mí (por ejemplo, sudo cupsenable y lpadmin -E).
Si está utilizando Debian 8.6, Cinnamon 2.2.16 (Linux) haga esto desde el menú de inicio de la GUI:
Para Ubuntu 16.04:
Esto abre el solucionador de problemas de impresión. Te dirá qué hacer a continuación.
Probablemente solo tendrá que verificar la propiedad Activada para su impresora CUPS en la Configuración de impresión. (Necesitarás desbloquear primero).
Finalmente, para evitar que esto vuelva a suceder, cambie la "política" de las impresoras a "reintentar trabajo" en la configuración de la impresora mencionada anteriormente (en propiedades | políticas).
¡Me lo arregló!
¿Qué causa este problema? Si mi impresora wifi se apaga cuando imprimo en una IMPRESORA CUPS y mi política es "detener la impresora", recibo un mensaje que dice que no pude imprimir y la impresora está desactivada (Habilitado está desmarcado) . Solo si la política se establece en "reintentar trabajo", Enabled no se desmarcará. Unos minutos después de que la impresora se vuelva a encender, sus trabajos comenzarán a imprimirse.
(Mi otra publicación sobre esto).
fuente
Tuve que lidiar con las mismas tonterías de CUPS aquí ... La solución para mí fue un script systemd que se ejecuta cada n minutos.
/usr/local/cups/enable_cups_printers.sh
cups.enable.printers.service
cups.enable.printers.timer
fuente
Como otros ya han dicho, 'cupsenable' o 'lpadmin -E' deberían hacer el truco.
Un problema relacionado es el IIRC que, de manera predeterminada, CUPS configura la impresora de modo que si la impresión de un trabajo falla de alguna manera, la impresora se desactiva. Puede cambiar esto para abortar el trabajo en su lugar.
fuente