web-dev-qa-db-fra.com

Comment imprimer à la fois en ligne de commande et via CUPS?

J'ai une imprimante qui est utilisée à deux fins:

  • Impression de documents standard (pages Word, Internet, etc.)
  • Impression directe à partir de la ligne de commande (effectuée par echo "text" > /dev/usb/lp0)

Tout cela a bien fonctionné dans une version précédente d'Ubuntu. Cependant, nous avons récemment mis à niveau vers 11.10 et rencontré un problème. Tout d’abord, les imprimantes ne sont plus ajoutées à/dev/usb. Donc, je ne peux pas faire écho à ce chemin, et suis incapable d’imprimer depuis la ligne de commande.

Après quelques soucis, j'ai pu trouver une solution de contournement. Cette solution de contournement consistait à modifier /etc/modprobe.d/blacklist-cup-usblp.conf. Ce fichier se lit comme suit:

# cups talks to the raw USB devices, so we need to blacklist usblp to avoid
# grabbing them
blacklist usblp

Après avoir commenté cette liste noire, le périphérique apparaît correctement dans/dev/usb, en tant que lp0. J'ai eu un problème avec les permissions de lp0, mais cela a été résolu par la réponse de Luis Felipe Barrera Mora.

Cependant, j'ai maintenant un problème majeur à résoudre. Après avoir commenté la liste noire, l'imprimante a cessé de fonctionner lors de l'impression à partir de documents Word. C'est logique, car je désactive quelque chose dont CUPS a besoin. Donc, fondamentalement, je n'ai maintenant plus que l'option pour activer l'impression CUPS régulière et aucune impression en ligne de commande, ou j'ai l'impression en ligne de commande et aucune impression CUPS.

MISE À JOUR

Pour être complet: j'ai en fait deux imprimantes connectées en même temps. L'un est utilisé pour imprimer à la fois en utilisant CUPS et la ligne de commande. L’autre - une imprimante de reçus Epson - n’est utilisée que pour l’impression en ligne de commande. J'ai passé de nombreux jours à essayer de le faire fonctionner avec CUPS mais ce n'était pas possible. Cependant, cela signifie que la commande lpr ne résoudra pas le problème car je ne peux pas faire fonctionner cette seconde imprimante sous CUPS. J'ai vraiment besoin d'être à la fois capable d'accéder à /etc/dev/lp0 (ou un chemin similaire) ET d'imprimer en utilisant CUPS en même temps.

6
user6019

J'ai le même problème, si vous ajoutez toujours des autorisations au fichier lp0, vous devez modifier les règles de l'imprimante:

$ gksudo gedit /lib/udev/rules.d/70-printers.rules

ajouter [, MODE="0666"]

Le fichier contient:

ACTION=="add", ... KERNELL="lp*" ... , MODE="0666"

Pourquoi n'utilisez-vous pas lpr pour imprimer à partir de la ligne de commande? Comme:

echo "text" > /tmp/someFileName
lpr -P YourPrinter /tmp/someFileName

C'est une solution de contournement, mais cela devrait être un moyen facile de faire ce que vous voulez sans changer certaines autorisations ...

2
user5950

Ouvrez un navigateur Web sur http://localhost:631/ pour configurer CUPS. Vous devriez pouvoir imprimer depuis la ligne de commande via echo "text" | lpr. Utilisez lpstat -t pour voir toutes les informations sur le statut de CUPS, lpstat -d pour voir la destination d'impression par défaut du système, man lpstat pour en savoir plus, man lpr pour spécifier quelle imprimante.

Toutes les impressions doivent passer par CUPS - il gère les files d'attente, les imprimantes, ...

2
waltinator

Vous pouvez essayer de l'ajouter en tant qu'imprimante "brute" dans CUPS. Je ne sais pas si cela fonctionne, mais ça vaut le coup d'essayer.

Pour cela, vous devrez re-blacklister usblp. Ajoutez Epson à CUPS, sélectionnez "Générique" en tant que fabricant et "File d'attente brute" en tant que périphérique. De plus, vous devrez peut-être utiliser lpr -o raw filename pour imprimer quelque chose.

0
bseibold

Je suis confronté à quelque chose de similaire. Ce que j’ai choisi de faire est de veiller à ce que l’imprimante de reçu se connecte uniquement via USB (l’imprimante à usage général se connectera via une interface réseau). Cela me permet de supprimer la liste noire, d’imprimer directement sur le périphérique et d’utiliser CUPS pour l’imprimante réseau.

Ce n'est pas vraiment optimal. Il serait vraiment agréable de pouvoir connecter tous les périphériques via USB, puis de sélectionner ceux que nous ne voulions pas que usblp saisisse. Cependant, dans l’intervalle, cela semble être la meilleure option. Ce n'est peut-être pas ce que vous voulez entendre, mais c'est le seul moyen que j'ai découvert.

Maintenant, pour les lecteurs généraux, la raison pour laquelle les imprimantes de reçus ne sont généralement pas connectées via CUPS, c’est que, dans les environnements de vente au détail, c’est qu’ici la rapidité est primordiale et que la simultanéité n’est pas un facteur. Vous n'avez pas besoin de gestion des imprimantes, des files d'attente, etc. Ce dont vous avez vraiment besoin, c’est que lorsqu’il imprime, il l’imprime tout de suite. Pas dans quelques secondes, mais tout de suite. Toutes les quelques secondes, vous pouvez réduire le flux de travail, ce qui signifie que chaque personne en ligne n'attend pas. Multipliez par la longueur de la ligne et vous voyez le problème. Par conséquent, les performances à chaque étape sont d’une importance cruciale et, comme vous n’avez généralement qu’une imprimante de reçus et qu’elle n’imprime que pour l’application au point de vente, CUPS coûte beaucoup plus cher qu’elle ne le propose.

Cela ne veut pas dire qu'il n'y a pas d'environnement dans lequel vous l'installeriez via CUPS. Les restaurants ont généralement des imprimantes similaires dans leurs cuisines et les problèmes de simultanéité y étant importants, vous utiliseriez donc CUPS. Toutefois, ce n’est pas toujours le meilleur outil pour le travail et les imprimantes de reçus de vente au détail ne suivent pas les mêmes hypothèses que celles suivies par CUPS.

0
Chris Travers