---
id: stampare-via-ssh
title: Stampare via SSH
description: Istruzioni per stampare in dipartimento da remoto, tramite SSH 🖨
author: Antonio De Lucreziis, Francesco Minnocci
tags: [linux, ssh, stampanti]
---

Per stampare in dipartimento non bisogna per forza usare i computer dei laboratori, possiamo che stampare direttamente da remoto tramite SSH. Vediamo come fare!

Se non l'avete mai fatto per prima cosa bisogna poter accedere da remoto ad una macchina chiamata "login", il cui indirizzo è `login.dm.unipi.it`. Per fare l'accesso possiamo usare il seguente comando con l'account di Ateneo (non quello Poisson!)

```bash shell
ssh USERNAME_ATENEO@login.dm.unipi.it
```

Una volta connessi possiamo stampare utilizzando il comando `lpr` seguito dal nome del file che vogliamo stampare. Prima però serve trasferire il file che vogliamo stampare sulla macchina "login". Per fare ciò possiamo usare il comando `scp`: per prima cosa usciamo dalla macchina "login" (premere `Ctrl+D` oppure scrivendo `exit`), andiamo nella cartella dove si trova il file che vogliamo stampare e poi eseguiamo il comando:

```bash shell
scp NOME_FILE.pdf USERNAME_ATENEO@login.dm.unipi.it:~/Documents
```

Dove `NOME_FILE.pdf` è il nome del file che vogliamo stampare e `Documents` è un esempio di cartella dove vogliamo trasferirlo. Una volta trasferito il file possiamo rifare ssh su "login" e stampare il file con il comando:

```bash shell
lpr Documents/NOME_FILE.pdf
```

Alternativamente possiamo stampare direttamente il file senza trasferirlo con il comando:

```bash shell
cat NOME_FILE.pdf | ssh USERNAME_ATENEO@login.dm.unipi.it lpr OPZIONI... -
```

Qui, `[OPZIONI...]` sono le opzioni che possiamo passare a `lpr` (vedi sotto). L'ultimo trattino "`-`" è molto importante e indica che il file da stampare è quello in standard input. Più precisamente, `cat NOME_FILE.pdf` invia il contenuto del file `NOME_FILE.pdf` allo standard output e `|` lo ridireziona a input di `ssh`, che a sua volta lo passa a `lpr` via rete.

## Opzioni di `lpr`

Il comando `lpr` accetta alcune opzioni che possono essere utili:

- `-P` seguito dal nome della stampante: permette di specificare la stampante su cui stampare, le stampanti disponibili in dipartimento sono
    - `cdc4` che è la stampante di default e si trova in Aula 4

    - `cdclf` che si trova al piano terra nel corridoio dopo l'Aula 4

    - `cdc3` che si trova in Aula 3 (è un po' vecchia ma di solito funziona)

- `-#` seguito dal numero di copie: permette di specificare il numero di copie da stampare. In realtà questa opzione non funziona per vari motivi arcani e se uno passa `-#N` per stampare $N$ copie, la stampante stampa $N^2$ copie. (Questo ha scaturito una serie di ragionamenti sul modo ottimo di decomporre $N$ come somma di quadrati [con tanto di sito di comodo](https://shortest-sum-of-squares.netlify.app/)...)

- `-o sides=two-sided-long-edge`: permette di stampare **fronte-retro** (che dovrebbe essere già il default)

- `-o sides=two-sided-short-edge`: permette di stampare fronte-retro con "la rilegatura" delle pagine sul lato corto

- `-o sides=one-sided`: permette di stampare _solo fronte_, comodo per stampare i meme di laurea

- `-o fit-to-page`: permette di ridimensionare il documento per farlo entrare in un foglio (è buona prassi passare sempre questa opzione)

- `-o media=a4`: permette di specificare il formato del foglio, di default è A4 quindi non dovrebbere servire

## Altre comodità

Stampare da remoto porta anche altre comodità, ad esempio possiamo interrompere un file che abbiamo mandato in stampa per sbaglio con il comando (sempre tutti comandi da eseguire su "login")

```bash shell
cancel -a
```

> Attenzione, il comando sopra cancella tutta la propria coda di stampa, non solo l'ultimo lavoro inviato.

Alternativamente possiamo vedere lo stato della coda di stampa con il comando

```bash shell
lpq -a
```

e cancellare un lavoro con uno specifico ID con

```bash shell
cancel ID
```
