J'ai une imprimante dans CUPS qui passe de temps en temps en raison de problèmes de pilote (HP 1010).
J'aimerais écrire un script shell qui s'exécutera une fois par heure pour relancer une imprimante dans CUPS. Mais je ne sais pas, après avoir cherché sur Google pendant quelques minutes, comment reprendre l’imprimante à partir de la ligne de commande shell.
Réponses:
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 répertorier vos imprimantes avec
lpstat -p
oulpc status
).Vous devrez peut-être exécuter la commande en tant que root ou via sudo. Donc, si vous devez activer l’imprimante dans un script shell, vous devrez ajouter le shell à la crontab de root ou modifier votre fichier sudoers.
la source
Votre problème peut être traité de différentes manières, selon la version de CUPS que vous utilisez.
Les versions les plus récentes de CUPS (versions 1.2 et supérieures) sont livrées avec une fonctionnalité intégrée qui pourrait aider ici. Cela s'appelle "ErrorPolicy". Son paramètre par défaut est sélectionné dans cupsd.conf et détermine la manière dont cupsd doit gérer les files d'attente d'impression qui ne se comportent pas comme prévu. Vous avez 3 choix pour baliser individuellement chaque file d'attente:
Explication:
abort-job
- Abandonnez ce travail et passez au travail suivant dans la même file d'attente
retry-job
- Réessayez ce travail après avoir attendu N secondes (où N est déterminé par la directive "JobRetryInterval" de cupsd.conf).
retry-this-job
- Réessayer le travail en cours immédiatement et indéfiniment.
stop-printer
- Arrêtez la file d'impression en cours et conservez le travail pour une impression ultérieure. C'est toujours la valeur par défaut, sauf indication contraire indiquée ci-dessus. Il s'agissait également d'un comportement par défaut + uniquement possible pour toutes les files d'attente des versions précédentes de CUPS (celle dont vous souhaitez vous débarrasser conformément à votre question).
En outre, vous pouvez définir des politiques d'erreur individuelles pour chaque file d'attente d'impression distincte. Ce paramètre serait noté dans le fichier printers.conf. (Définissez-le à partir d'une ligne de commande avec
lpadmin -p printername -o printer-error-policy=retry-this-job
).Pour les versions plus anciennes de CUPS, je vous conseillerais de consulter
beh
le gestionnaire BackEnd de CUPS .beh
est un wrapper qui peut être appliqué à n’importe quel serveur CUPS.En supposant que votre file d'attente d'impression ait actuellement défini un backend
socket://192.168.1.111:9100
, et que son comportement ne vous convient pas (être désactivé par cupsd de temps en temps en raison de problèmes de connexion réseau). Avecbeh
vous, vous redéfiniriez votre backend comme ceci:Cela permettrait de réessayer un travail 20 fois par intervalles de deux minutes et de désactiver la file d'attente uniquement en cas d'échec. Ou vous pouvez faire ceci:
Cela relance le travail 3 fois avec un délai de 5 secondes entre les tentatives. Si le travail échoue toujours, il est supprimé, mais la file d'attente n'est pas désactivée. Vous souhaitez laisser cupsd essayer indéfiniment de se connecter à l'appareil? Bien, essayez ceci:
Essayez infiniment 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 éteinte. Vous pouvez intentionnellement retarder 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'y a pas besoin de retoucher avec des scripts bash, tâches cron,
lpadmin
,cupsenable
ousudo
pour Réactiver les files d' attente CUPS en descendant de façon erratique.la source
JobRetryInterval 58
d’essayer toutes les 58 secondes. Les autres valeurs possibles sont1w
(1 semaine),3d
(3 jours),7h
(7 heures) ou4m
(4 minutes).cupsd.conf
paramètres possibles jusqu'à CUPS v1.7 sont documentés ici: http://www.cups.org/documentation.php/doc-1.7/ref-cupsd-conf.html . Vérifiez les annotations de chaque paramètre sur le bord droit de la page: cela vous indiquera quelle version de CUPS a été la première à la prendre en charge. Bonne découverte de paramètres plus utiles! :-)L'
-E
option d'imprimante utilisée aveclpadmin
devrait le faire. Vous pouvez probablement simplement créer un travail cron avec lalpadmin
commande.cron
Entrée horaire :Vous pouvez ajouter cela en exécutant:
Assurez-vous d’ajouter le
-E
nom après l’imprimante, car c’est une option d’imprimante ici, pas une option lpadmin. Notez l'extrait suivant de laman lpadmin
page qui a été souligné dans un commentaire ci-dessous:la source
error-policy
ne répare rien.cupsenable
ne répare rien. Fait seulementlpadmin
pour moi.Mon imprimante HP CP1215 avait également une erreur: Imprimante en pause - "/ usr / lib / cups / backend / hp failed"
Après avoir redémarré à la fois
cups
etavahi-daemon
et l' identification avec imprimantelpstat -p
et permettant aveccupsenable
, j'ai pu imprimer à nouveau. Redémarrer seulementcups
et activer n'a pas fait l'affaire.J'ai également modifié la stratégie par défaut pour réessayer le travail et j'ai finalement évité des erreurs à l'avenir avec cronjob:
où
poissa käytöstä
est le texte de localisation en finnois pour la maintenance "hors service" etHP_Tuloostin
est le nom de mon imprimeur.D'après mon expérience, les stratégies d'imprimante par défaut et les stratégies actuelles doivent être configurées pour être relancées. La stratégie par défaut est une stratégie que vous obtenez lorsque vous installez une nouvelle imprimante.
la source
Ceci répertorie tous les fichiers ppd qui représentent une imprimante installée, supprime l’extension ppd, ignore un ppd VMware inclus sur de nombreux serveurs VMware (si vous n’avez pas besoin de simplement le supprimer
|grep -v VMware
) et passe les autres nomsxargs
auxquels toutes les annulent. les imprimantes.Un travail cron devrait rendre ce travail bien.
la source
Si le problème vient du fait que l’interface graphique nécessite un identifiant pour relancer l’imprimante, une autre solution consiste à autoriser la reprise de l’imprimante via l’interface graphique sans identifiant. Pour ce faire, fermez les gobelets et modifiez cette ligne
sudo vi /etc/cups/cupsd.conf
:Et supprimez la
Resume-Printer
directive, puis redémarrez cups. Si la directive apparaît dans plusieurs<Limit>
sections, vous pouvez la<Policy>
supprimer ou la supprimer de toutes les sections. Vous devriez maintenant pouvoir relancer l’imprimante sans vous connecter à partir de l’interface graphique. J'ai vu cela sur macworld, mais cela s'applique à toutes les tasses installées.la source
La réponse de Janne ci-dessus, par exemple ceci:
... provoquera le redémarrage de CUPS toutes les minutes, quel que soit l'état de l'imprimante dans laquelle se trouve l'imprimante. En effet, la clause de relance de cups n'est pas associée à &&.
Voici un court script BASH que j’avais utilisé pour conditionner le redémarrage de CUPS à la détection d’un état d’échec.
Remplacez «DS40» par l’imprimante dont vous souhaitez connaître l’état et «désactivée» par l’une quelconque des sorties lpstat -p dans votre langue.
la source
J'ai mis à jour cupsd.conf avec la ligne:
ErrorPolicy Abort-Job
Puis j'ai redémarré cupsd en utilisant: /etc/init.d/cups restart
Mais lorsque je regarde le fichier printers.conf, ErrorPolicy n'est pas mis à jour. Selon la documentation de cups, la ligne "ErrorPolicy abort-job" doit apparaître dans la section imprimante.
J'ai également essayé avec lpadmin de mettre à jour le ErrorPolicy. Rien ne modifie la ErrorPolicy ou ne le fait pas dans le fichier printers.conf.
Qu'est-ce que je rate? Comment puis-je m'assurer que cupsd annule un travail par erreur?
la source
lpadmin -p p-go-avtom2 -v p-go-avtom2 -E
La source
la source
Un tas de solutions ici ne fonctionnait pas pour moi (par exemple, sudo cupsenable et lpadmin -E).
Si vous utilisez Debian 8.6, Cinnamon 2.2.16 (Linux) le fait depuis le menu de démarrage de votre interface graphique:
Pour Ubuntu 16.04:
Cela ouvre l'utilitaire de résolution des problèmes d'impression. Il vous dira quoi faire ensuite.
Il vous suffira probablement de vérifier la propriété Enabled de votre imprimante CUPS dans vos paramètres d'impression. (Vous devrez d'abord déverrouiller).
Enfin, pour éviter que cela ne se reproduise, remplacez la "stratégie" de l'imprimante par "nouvelle tentative de travail" dans la configuration de l'imprimante mentionnée ci-dessus (sous Propriétés | Stratégies).
Corrigé pour moi!
La cause de ce problème: Si mon imprimante Wi-Fi est éteinte lorsque j'imprime sur une IMPRIMANTE CUPS et que ma stratégie est "Arrêter imprimante", un message m'indiquant que je ne parviens pas à imprimer et que l'imprimante est désactivée (Activé est désactivé) . Ce n'est que si la stratégie est définie sur "Réessayer le travail" que l'option Activée ne sera pas décochée. Quelques minutes après la mise sous tension de l'imprimante, vos travaux vont commencer à être imprimés.
(Mon autre post à ce sujet.)
la source
J'ai dû faire face au même non-sens de CUPS ici ... La solution pour moi était un script systemd qui s'exécute toutes les n minutes.
/usr/local/cups/enable_cups_printers.sh
cups.enable.printers.service
cups.enable.printers.timer
la source
Comme d'autres l'ont déjà dit, «cupsenable» ou «lpadmin -E» devrait faire l'affaire.
IIRC est un problème lié au fait que CUPS configure par défaut l’imprimante de telle sorte que si l’impression échoue, l’imprimante est désactivée. Vous pouvez changer cela pour abandonner le travail à la place.
la source