52 votes

Comment reprendre l'imprimante CUPS à partir de la ligne de commande ?

J'ai une imprimante dans CUPS qui, en raison de problèmes de pilote (HP 1010), se met de temps en temps en pause.

Je voudrais écrire un Shell Shell qui s'exécutera une fois par heure pour reprendre une imprimante dans CUPS. Mais je n'ai aucune idée après avoir googlé pendant quelques minutes comment reprendre une imprimante à partir de la ligne de commande Shell.

79voto

Ulf Klose Points 241

Il y a la commande cupsenable.

cupsenable printer

démarre une imprimante désactivée (pour connaître le nom de l'imprimante, vous pouvez dresser la liste de vos imprimantes à l'aide de la fonction lpstat -p o lpc status ).

Il se peut que vous deviez exécuter la commande en tant que root ou par l'intermédiaire de sudo. Ainsi, si vous devez activer l'imprimante dans un Shell Shell, vous devrez ajouter le Shell à la crontab de root, ou modifier votre fichier sudoers.

26voto

Kurt Pfeifle Points 11465

Votre problème peut être résolu de différentes manières, en fonction de la version de CUPS que vous utilisez.

  1. Plus d'informations les versions récentes de CUPS (à partir de la version 1.2) sont dotés d'une fonctionnalité intégrée qui pourrait s'avérer utile dans ce cas. Elle s'appelle "ErrorPolicy". Son réglage par défaut est sélectionné dans cupsd.conf, et détermine comment cupsd doit gérer les files d'attente d'impression qui ne se comportent pas comme prévu. Vous avez 3 choix pour étiqueter chaque file d'attente individuellement :

    ErrorPolicy abort-job  
    ErrorPolicy retry-job  
    ErrorPolicy retry-this-job  
    ErrorPolicy stop-printer  

    Explication :

    • abort-job
      -- Abandonne ce travail et passe au travail suivant dans la même file d'attente

    • retry-job
      -- Réessayer ce travail après une attente de N secondes (où N est déterminé par cupsd.conf de la directive "JobRetryInterval").

    • retry-this-job
      -- Réessaie le travail en cours immédiatement et indéfiniment.

    • stop-printer
      -- Arrête la file d'attente d'impression en cours et conserve le travail pour une impression ultérieure. C'est toujours le comportement par défaut, à moins que vous ne définissiez autre chose selon les alternatives mentionnées ci-dessus. C'était aussi le comportement par défaut + le seul comportement possible pour toutes les files d'attente dans les versions précédentes de CUPS (celle dont vous voulez vous débarrasser selon votre question).

    En outre, vous pouvez définir des politiques d'erreur individuelles pour chaque file d'attente d'impression. Ce paramètre est indiqué dans le fichier printers.conf. (Vous pouvez le définir à partir d'une ligne de commande à l'aide de la commande lpadmin -p printername -o printer-error-policy=retry-this-job ).

  2. Pour les anciennes versions de CUPS Je vous recommande de consulter beh , le système CUPS Gestionnaire de back-end . beh est une enveloppe qui peut être appliquée à n'importe quel backend CUPS.

    En supposant que votre file d'attente d'impression ait actuellement défini un backend de socket://192.168.1.111:9100 et il se comporte de la manière que vous n'aimez pas (il est désactivé par cupsd de temps en temps en raison de problèmes de connexion au réseau). Avec l'aide de beh vous redéfiniriez votre backend comme suit :

    beh:/0/20/120/socket://192.168.1.111:9100

    Cette méthode permet de réessayer un travail 20 fois à deux minutes d'intervalle. et ne désactive la file d'attente qu'en cas d'échec. Vous pouvez également procéder de la manière suivante :

    beh:/1/3/5/socket://192.168.1.111:9100

    Le travail est ainsi réessayé trois fois, avec un délai de 5 secondes entre les tentatives. Si le travail échoue encore, il est rejeté, mais la file d'attente n'est pas désactivée. Vous voulez laisser cupsd essayer indéfiniment de se connecter au périphérique ? Bien, essayez ceci :

    beh:/1/0/30/socket://192.168.1.111:9100

    Essayer à l'infini jusqu'à ce que l'imprimante revienne. Les intervalles entre les tentatives de connexion sont de 30 secondes. Le travail n'est pas perdu lorsque l'imprimante est mise hors tension. Vous pouvez retarder intentionnellement l'impression en éteignant simplement l'imprimante. Une bonne configuration pour les imprimantes de bureau et/ou les utilisateurs à domicile.


Dans l'ensemble, il n'est pas nécessaire de s'embarrasser de scripts bash scripts, de tâches cron, lpadmin , cupsenable o sudo afin de réactiver les files d'attente de CUPS qui tombent en panne de manière irrégulière.

10voto

Damian Powell Points 315

のことです。 -E option d'imprimante utilisée avec lpadmin devrait le faire.

lpadmin [-U username ] [ -h server[:port] ] -p printer option(s)

Comme indiqué dans un commentaire ci-dessous, assurez-vous d'ajouter l'élément -E après le nom de l'imprimante, car il s'agit ici d'une option d'imprimante, et non d'une option d'impression. lpadmin option. On notera l'extrait suivant de l'avis de la Commission européenne. man lpadmin page :

Lorsqu'elle est spécifiée avant les options -d, -p ou -x, l'option -E impose le chiffrement lors de la connexion au serveur.

Si le problème est récurrent, vous pouvez probablement créer une tâche CRON avec la commande lpadmin commandement. Toutes les heures cron entrée :

0 * * * * /usr/sbin/lpadmin -p your_printer -E

Vous pouvez l'ajouter en exécutant :

sudo crontab -e

6voto

Mobbit Points 674

Mon imprimante est HP CP1215 et j'ai également eu une erreur : Imprimante en pause - "/usr/lib/cups/backend/hp failed" (Échec de l'imprimante)

Après avoir redémarré les deux cups y avahi-daemon et en identifiant l'imprimante avec lpstat -p et l'habilitation avec cupsenable J'ai pu imprimer à nouveau. Redémarrage seulement cups et l'activation n'a pas eu d'effet.

J'ai également changé la politique par défaut en retry-job et j'ai finalement réussi à éviter les erreurs à l'avenir avec cronjob :

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

poissa käytöstä est le texte de localisation en finnois pour maintenance "out of order" et HP_Tuloostin est le nom de mon imprimante.

D'après mon expérience, la stratégie par défaut et la stratégie actuelle de l'imprimante doivent être configurées de manière à ce que le travail soit refait. La stratégie par défaut est celle que vous obtenez lors de l'installation d'une nouvelle imprimante.

3voto

Toni Savoya Points 31
ls /etc/cups/ppd/ |cut -d "." -f1 |grep -v VMware |xargs -i cupsenable {}

Cela permet de lister tous les fichiers ppd qui représentent une imprimante installée, de couper l'extension ppd, d'ignorer un ppd VMware présent sur de nombreux serveurs VMware (si vous n'en avez pas besoin, supprimez simplement la fonction |grep -v VMware ) et transmet les autres noms à xargs qui désactive toutes les imprimantes.

Une tâche cron devrait permettre d'obtenir de bons résultats.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X