Dopo aver affrontato i comandi interni alla shell Bash ed i comandi di sistema richiamabili all’interno dalla stessa per la manipolazione degli stream di output e dei contenuti dei file in questo articolo verranno trattati i comandi per la gestione delle code di stampa. Verranno illustrati i comandi per inviare un file direttamente alla stampante, analizzare la coda di stampa e rimuovere lavori in coda.
I comandi per operare sulle code di stampa nei sistemi Linux moderni sono forniti dal pacchetto del server di posta CUPS. CUPS fornisce un set di comandi retro compatibili al precedente gestore della posta Linux, LPD: questo significa che il nome degli stessi è stato mantenuto identico in modo da favorire l’integrazione di CUPS con i programmi che fanno riferimento a comandi di sistema come lpstat, lpq e così via. Sebbene CUPS di default renda disponibile un’interfaccia web alla porta 631, alla quale si può accedere con il proprio browser, molte volte potrebbe essere necessario utilizzare la linea di comando per operare sulle code di stampa. I comandi che consentono tali operazioni si dividono in comandi che richiedono i permessi dell’utente root ed in comandi utilizzabili da utenti non privilegiati.
Informazioni sulle stampanti (utente root)
lpstat
Capire quali sono le code configurate all’interno del sistema è il primo passo per iniziare ad operare all’interno delle stesse.
Il comando lpstat consente di visualizzare diverse informazioni sulle stampanti installate all’interno del sistema, ad esempio attraverso l’opzione “-p” il comando restituisce l’elenco delle stampanti:
# lpstat -p la stampante Brother-HL-4040CN è in attesa. Abilitata da gio 19 nov 2009 18:23:32 CET la stampante HPDeskJet9300 è in attesa. Abilitata da sab 21 nov 2009 18:15:58 CET la stampante PDF è in attesa. Abilitata da gio 19 nov 2009 17:29:14 CET
Un diverso elenco, contenente i riferimenti delle stampanti (socket, path remoti, etc.) è ottenibile attraverso l’opzione “-v”:
# lpstat -v dispositivo per Brother-HL-4040CN: socket://192.168.1.13 dispositivo per HPDeskJet9300: smb://RASCA/RASCABOX/HPDeskjet9300 dispositivo per PDF: cups-pdf:/
E’ possibile inoltre identificare la coda di default verso cui vengono diretti i lavori in stampa (opzione “-d”):
# lpstat -d destinazione predefinita di sistema: PDF
Tutte le informazioni illustrate sono ottenibili in un unico contatto attraverso l’opzione “-t”, mentre, lanciato senza argomenti, il comando restituisce l’elenco dei lavori in coda, ottenibile anche con i comandi illustrati di seguito.
Gestire la coda (utente root)
lpq
E’ possibile ottenere l’elenco dei lavori accodati nella stampante di default o di una specifica attraverso il comando lpq:
# lpq PDF è pronta Posiz. Proprietario Stampa Doc. Dim. totali 1st rasca 298 Command-Line Printing and Optio 396288 byte
Nel caso si volessero conoscere i dettagli della coda relativa ad una stampante specifica, questa va specificata con l’opzione “-P”:
# lpq -P HPDeskJet9300 HPDeskJet9300 è pronta nessuna voce
lprm
Per operare sulle code, rimuovendo lavori di cui si conosce l’identificativo (ottenuto attraverso lpq), è possibile utilizzare il comando lprm, indicando con l’opzione “-P” l’accoppiata coda/identificativo:
# lprm -P PDF/298
Inviare stampe (utente non privilegiato)
lpr
Se un utente comune volesse lanciare delle stampe da linea di comando, cosa molto utile in caso di lavori di sistema notturni, notifiche di problemi (o qualsiasi altro motivo per cui sia sensato utilizzare della carta!), il comando da utilizzare è lpr che stampa il contenuto di un file di testo passato come parametro:
$ lpr testfile
pr e fmt
lpr può essere utilizzato anche per dirigere l’output di un comando alla stampante. Ad esempio, utilizzando i comandi pr o fmt che formattano un file di testo per la stampa è possibile passare attraverso una pipe ad lpr la stampa da effettuare:
$ pr -a testfile | lpr
oppure
$ pr -a testfile | lpr
mpage
Lo stesso discorso si applica al comando mpage che consente di operare con maggior dettaglio sul formato di stampa. Lanciato senza argomenti, mpage produrrà una pagina divisa in quattro contenente il testo all’interno del file passato come parametro. Attraverso l’opzione “-b” è poi possibile specificare il formato della carta che verrà utilizzato dalla stampante (di default A4). Per conoscere i formati supportati è possibile utilizzare il parametro “-b” con l’aggiunta di un punto interrogativo:
$ mpage -b? Mpage knows about the following paper types: Type Points Wide Points High -------------- ----------- ----------- Letter 612 792 LetterSmall 612 792 Tabloid 792 1224 Ledger 1224 792 Legal 612 1008 Statement 396 612 Executive 540 720 A0 2384 3368 A1 1684 2384 A2 1192 1684 A3 842 1192 A4 596 842 A4Small 595 842 A5 420 595 B4 729 1032 B5 516 729 Folio 612 936 Quarto 610 780 10x14 720 1008
Oltre all’utilizzo attraverso una pipe, mpage supporta anche la stampa diretta di file (anche in formato postscript), così come funziona lpr:
$ mpage -PPDF testfile
Numerose sono le opzioni disponibili per il comando mpage e sono tutte documentate nella man page del programma.
Conclusioni
Questa breve carrellata di comandi presenta alcune utili informazioni che potrebbero risultare vitali in situazioni (volute o meno) in cui non sia disponibile altro accesso al sistema che quello della linea di comando. Approfondendo presso i link presentati qui sotto sarà possibile acquisire la padronanza totale del sistema di stampa da linea di comando.
Fonti di informazioni utili:
Pagina ufficiale del progetto CUPS: http://www.cups.org/documentation.php/options.html
The Linux Printing Usage HOWTO: http://tldp.org/HOWTO/Printing-Usage-HOWTO.html
di Raoul Scarazzini – MiaMammaUsaLinux.org