79 votes

Comment lister les noms d'imprimantes acceptables pour une utilisation avec lpr ?

El lpr indique qu'une imprimante de destination peut être spécifiée avec la commande -P drapeau.

-P destination[/instance]
    Prints files to the named printer.

J'ai "ajouté" diverses imprimantes sur des partages Samba locaux en utilisant l'interface graphique dans Ubuntu/Gnome. Comment puis-je obtenir une liste de ces imprimantes disponibles dans le format que l'interface graphique de l -P attend (de préférence à partir d'un Shell bash) ?

119voto

OrionDarkwood Points 488
$ lpstat -p -d

De la Manuel CUPS .

El -p spécifie que vous voulez voir une liste d'imprimantes, et l'option -d indique l'imprimante ou la classe par défaut actuelle.

18voto

Gus Neves Points 379

Pour obtenir une liste, vous pouvez utiliser :

lpstat -a

o

cat /etc/printcap

Pour imprimer uniquement les noms des imprimantes :

lpstat + lecture + tableau :

$ while read l; do l=($l); echo "${l[0]}"; done <<< "$(lpstat -a)"

lpstat + awk :

$ lpstat -a | awk '{print $1}'

lpstat + cut :

$ lpstat -a | cut -f1 -d ' '

cat + grep + cut in /etc/printcap :

$ cat /etc/printcap | cut -f1 -d'|' | grep '^#' -v

Voici ce qui est affiché, un par ligne :

HP_LaserJet_P1606dn
HP_Deskjet_2540_series
HP_LaserJet_M1212nf
GCP-Save_to_Google_Docs

J'ai l'impression que le lpstat sont plus élégantes et plus fiables. Principalement parce que /etc/printcap n'a pas été trouvé sur certains systèmes que j'ai testés.

A propos de l'utilisation awk o cut Cela dépend de ce que vous avez installé et de ce que vous préférez. L'option bash read + bash array devrait fonctionner sur n'importe quel Shell bash sans avoir besoin d'externes.

EDIT : J'ai dit que la solution marquée ne fonctionne pas pour moi sur Amazon Linux. Mais je suppose qu'elle fonctionne si vous voulez juste copier les noms des imprimantes au milieu du reste de la sortie. Cela fonctionne de la même manière que si vous utilisiez simplement lpstat -a .

$ lpstat -p -d
printer HP_Deskjet_2540_series is idle. enabled since Tue 22 Dec 2015 01:12:10 PM BRST
. . .
printer GCP-Save_to_Google_Docs is idle. enabled since Tue 15 Dec 2015 02:13:33 AM BRST
system default destination: HP_LaserJet_P1606dn

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