Tullio Facchinetti

Piattaforma SSHCode per esercitazioni ed esami

by Tullio Facchinetti


La piattaforma SSHCode fornisce uno spazio di lavoro per lo svolgimento di tutorati ed esami.

Il nuovo servizio SSHCode è basato su una connessione con protocollo SSH (Secure SHell) ed un terminale configurato per lo svolgimento di tutorati ed esami in linguaggio C.

SSH è un protocollo che permette di collegarsi in modo sicuro ad una macchina connessa ad Internet (detta macchina remota). In pratica digitando sul proprio computer, si possono eseguire comandi come se si stesse operando sull’elaboratore in remoto.

Per questo motivo è uno strumento utilizzatissimo da chiunque abbia la necessità di operare su macchine/computer/server che non siano fisicamente accessibili. Per esempio, la pressochè totalità dei server web vengono amministrati tramite SSH. Questa precisazione è utile per chiarire che SSH è uno strumento che potrebbe rivelarsi utile, e spesso indispensabile, a chiunque si troverà a lavorare in campo informatico anche in futuro.

Client SSH

Per collegarsi ad una macchina remota tramite il protocollo SSH bisogna usare un client SSH e fornirgli i necessari parametri di collegamento. Un client SSH può essere cosiderato come il browser, ma invece di visualizzare una pagina web, stabilisce una connessione all’interno della quale interagire tramite terminale.

Esistono molti client SSH, utilizzabili in vari contesti e per diversi sistemi operativi. Consiglio i seguenti, che sono parecchio utilizzati e quindi particolarmente affidabili:

È possibile scegliere il client preferito in base al proprio sistema operativo e, in caso di più opzioni (sistemi Linux o Windows), alle proprie preferenze.

Parametri per il collegamento

Per effettuare il collegamento, un client SSH richiede i seguenti parametri:

Questi parametri sono/saranno inviati via email a ciascuno studente e sono da considerarsi strettamente personali.

Solitamente i parametri sono inviati all’inizio dell’anno accademico in vista dello svolgimento di esercitazioni e tutorati. In vista di un esame, i parametri vengono inviati (o re-inviati) a tutti gli iscritti all’esame al momento della chiusura delle iscrizioni.

Se non si è in possesso delle credenziali e si desidera prendere confidenza con l’ambiente di programmazione in vista di un esame, seguire queste istruzioni.

I parametri di collegamento sono tutti molto semplici da configurare nel client prescelto. Tutti i client indicati, infatti, presentano nella prima schermata i campi da riempire con questi dati.

Se ci si collega per la prima volta, il client potrebbe chiedere di inserire la parola yes di conferma prima di procedere a chiedere la passord.

Restrizioni nel collegamento

La piattaforma SSHCode è utilizzabile collegandosi da qualsiasi client connesso a reti che permettono una connessione SSH.

Queste includono le connessioni Internet della propria abitazione e, normalmente, l’hotstop realizzato con lo smartphone. Inoltre, ci si può collegare dall’interno delle aule informatiche dell’Università.

Non è invece possibile collegarsi tramite la rete WiFi nè la rete Eduroam dell’Università di Pavia, che filtrano (ovvero, non permettono) il traffico SSH.

Collegamento con PuTTY

Ecco per esempio la schermata di PuTTY:

In PuTTY è possibile anche salvare e caricare dei preset, in modo da evitare di dover re-inserire ogni volta i dati per la connessione.

Collegamento con l’estensione di Chrome

La schermata di Secure Shell App per Chrome è la seguente:

Collegamento da terminale col comando ssh

Il programma ssh da linea di comando si può invece invocare in questo modo:

ssh -p porta username@hostname

Collegamento da terminale col comando mosh

La connessione ad SSHCode può essere fatta da terminale anche utilizzando il programma Mosh. Mosh funziona come ssh, ma ha alcune funzionalità che lo rendono più robusto, soprattutto in caso di connessioni di rete non ottimali (es., scarsa copertura WiFi o 3G/4G).

Il comando per il collegamento tramite Mosh è il seguente:

mosh username@hostname --ssh="ssh -p porta"

ATTENZIONE: durante l’esame in aula viene usato Mosh, quindi potrebbe essere conveniente provarlo anche da casa.

Mosh non è normalmente installato nemmeno nei sistemi Linux. Bisogna quindi procedere con l’installazione come spiegato nella pagina del programma.

Inserimento della password

La password, e nel caso di PuTTY anche lo username, vanno invece inseriti una volta avviata la connessione.

ATTENZIONE: per ragioni di sicurezza, durante l’inserimento della password i caratteri digitati non vengono visualizzati (anche se alcuni client permettono di visualizzarli).

Ambiente di programmazione

Per accedere all’ambiente di programmazione, digitare

fdi start

L’interfaccia dispone di diverse finestre tra le quali ci si può spostare a rotazione nelle due direzioni con i tasti F7 e Shift-F7.

Tutte le finestre sono delle “viste” dello stesso ambiente, nel senso che la directory di lavoro è la stessa e tutti i comandi da tutte le finestre svolgono le stesse operazioni.

Normalmente si può usare una finestra per scrivere il programma e un’altra per la compilazione. Durante l’esame ci sono finestre addizionali con il testo dell’esame e una finestra di aiuto.

Per uscire dall’ambiente di programmazione, digitare

fdi stop

e poi

exit

L’ambiente di programmazione è unicamente basato su shell Linux. Dopo l’accesso, si ha appunto a disposizione una shell nella quale impartire i comandi.

Esplorazione del file system

Si possoono utilizzare i noti comandi per elencare i file presenti in una directory (ls), per creare directory (mkdir), per spostarsi tra le directory (cd), ecc.

File browser nnn

Il filesystem può anche essere esplorato con un comodo programma chiamato nnn. Prova a digitare il comando, e usa i tasti freccia per navigare nel filesystem. Per uscire da nnn digita q (sta per “quit”, ed è un tasto usato spesso per uscire dai programmi interattivi per terminale).

Maggiori informazioni sulle funzionalità di nnn sono presenti sul sito web del programma.

Editor di testo

Per visualizzare ed modificare i file di testo, come i programmi .c, sono disponibili vari editor, tra cui vim, nano, micro.

Quello consigliato, perché più semplice da usare, è micro. Per aprire per esempio un file chiamato tutorato.c basta digitare:

micro tutorato.c

La seguente figura mostra un esempio dell’interfaccia che si ottiene lanciando fdi start, dopo aver aperto un file con l’editor micro.

Per uscire dall’editor digitare Ctrl-Q (tasto control insieme a Q). L’editor mette a disposizione i tipici comandi per il copia/taglia/incolla (Ctrl-C, Ctrl-X e Ctrl-V rispettivamente), l’undo (Ctrl-Z), e l’uso del mouse. Con Ctrl-G è possibile visualizzare la guida dell’editor, e con Alt-G le associazioni dei tasti.

Visualizzazione degli errori di compilazione

Quando è aperto un file con estensione .c, micro riconosce automaticamente che si tratta di un programma C.

Viene quindi attivato il cosiddetto syntax highlighting, che evidenzia con colori diversi i vari elementi del programma (parole chiave, stringhe, variabili, ecc.).

Quando si salva il file corrente con Ctrl-S, micro visualizza i caratteri >> accanto alle righe nelle quali il compilatore segnala un warning o un errore.

Portando il cursore in una riga contrassegnata con i caratteri >>, viene visualizzato il testo del messaggio del compilatore nella barra di stato di micro, in basso nella finestra dell’editor.

Questa funzionalità è particolarmente comoda durante lo sviluppo del programma, in quanto permette di sapere se il programma è corretto semplicemente salvandolo su disco, senza compilarlo esplicitamente.

Selezione dello schema di colori in micro

La combinazione di colori usata da micro, soprattutto quando è attivo il syntax highlighting durante la scrittura di un programma, può non essere ottimale, in quanto dipende anche dal colore dello sfondo, dal client SSH utilizzato, ecc.

Per adattare la combinazione di colori alle proprie esigenze, bisogna accedere alla barra dei comandi di micro digitando Ctrl-E all’interno del programma. Successivamente, digitare il seguente comando:

set colorscheme schema

dove schema è il nome dello schema di colori desiderato (es., simple, monokai, darcula, ecc.).

Dal momento che non esiste una lista completa di tutti gli schemi di colore disponibili, è possibile usare l’autocompletamento di micro per “esplorare” le varie possibilità, procedendo come segue.

Digitare Ctrl-E, e al prompt digitare soltanto:

set colorscheme 

E’ importante che dopo colorscheme si digiti anche uno spazio, come se si volesse inserire successivamente il nome dello schema.

A questo punto, premendo il tasto TAB, micro elencherà i suggerimenti per completare il comando, che corrispondono ai nomi degli schemi di colori disponibili. Premendo nuovamente TAB si selezionerà il nome successivo, mentre Shift-TAB selezionerà il nome precedente. Il tasto TAB (e la combinazione Shift-TAB) può essere premuto tante volte quante sono necessarie per selezionare il nome desiderato. Premere poi INVIO per selezionare lo schema corrente.

Consiglio di provare vari schemi di colori per selezionare quello più adatto al proprio setup.

ATTENZIONE: per valutare uno schema di colori conviene aver aperto nell’editor un file .c con un po’ di istruzioni, in modo da poter verificare quali colori vengono utilizzati per i vari elementi del testo. Infatti, se nell’editor non è presente del testo, l’effetto di un diverso schema di colori è difficile da valutare.

Quando si esce da micro, l’impostazione dello schema di colori viene automaticamente salvata e verrà utilizzata alla successiva apertura del programma.

Informazioni utili

Ingrandimento della finestra attiva

Molti client mettono a disposizione una dimensione limitata del terminale (numero di righe x colonne). Pertanto la suddivisione dello schermo generata dal comando fdi start può portare a finestre troppo piccole per poter lavorare agevolmente.

Per ovviare a questo inconveniente è possibile zoomare la finestra attiva. Con la combinazione di tasti Ctrl-b z (tenere premuti il tasto Ctrl e b insieme, poi lasciare, e premere z) si effettua lo zoom della finestra attiva, che assunme l’intera dimensione della finestra del client. In questo modo lo spazio a disposizione per lavorare diventa molto maggiore. Per tornare alla situazione precedente, premere nuovamente Ctrl-b z. Lo zoom si può effettuare in qualsiasi finestra.

ATTENZIONE: lo zoom funziona correttamente su sistemi Windows e Linux. Attualmente non sembra essere garantito il funzionamento su sistemi Mac.

Scorrimento del risultato della compilazione

Talvolta il risultato della compilazione è troppo lungo per poter essere consultato comodamente.

Per compilare programma.c e poter scorrere l’output generato da gcc in caso di molti warning e errori, usare il comando:

gcc -Wall programma.c 2>&1 | less

Sarà possibile scorrere l’output di gcc con le frecce su e giù. Per tornare al prompt digitare q (quit).

Attenzione che se l’output del compilatore è assente viene visualizzata una schermata vuota. Digitare q per uscire.

Copia e incolla

Il copia e incolla da dentro a fuori della sessione SSH può essere un problema e la soluzione dipende da quale client si utilizza e dal sistema operativo.

Nel caso si utilizzi la Secure Shell App, possono essere utili queste informazioni.

Trasferimento di file

La piattaforma SSHCode permette il trasferimento di file da e verso il proprio computer tramite un client SFTP (Secure FTP) collegandosi con le stesse credenziali usate per accedere al servizio ma utilizzando la porta 22003.

Un client semplice da usare e disponibile per tutte le piattaforme è FileZilla.

I parametri di configurazione vanno impostati come in figura:

filezilla

Configurazione dell’ambiente

L’ambiente di sviluppo accessibile tramite il comando fdi permette la configurazione di alcuni aspetti, come i colori, i tasti per spostarsi da una finestra all’altra, e alcuni altri. Le informazioni per configurare l’ambiente possono essere consultate in questa pagina.

Concetti avanzati: tmux

Per chi ama approfondire la conoscenza delle tecnologie utilizzate nell’ambiente di programmazione, viene utilizzato tmux. Si tratta di un cosiddetto “terminal multiplexer”, ovvero un programma che permette di ottenere diversi terminali in una singola sessione di shell (SSH nel nostro caso).

Il comando fdi start/stop non fa altro che richiamare tmux. Pertanto un utente avanzato può pensare di utilizzare direttamente le funzionalità di tmux.

Esistono numerosi tutorial online per l’uso di tmux.

Un utile riferimento alle combinazioni di tasti che possono essere usate con tmux è disponibile su tmuxcheatsheet.


Highlights

  • Students and theses
  • Publications
  • Thesis topics
  • Curated awesome list of CLI apps
  • Last updates (English)

  • Students and theses ()
  • Students and theses - English ()
  • Learn enough C to survive ()
  • Workflow for writing theses collaboratively ()
  • Guidelines for theses and presentations ()
  • Projects ()
  • Shortcuts for Bash ()
  • Last updates (Italian)

  • Risultati FdI 21-25 Novembre 2022 ()
  • Studenti e tesi ()
  • Risultati FdI 29 Settembre 2022 ()
  • Risultati FdI 02 Settembre 2022 ()
  • Risultati FdI 28 Luglio 2022 ()
  • Risultati FdI 29 Giugno 2022 ()
  • Interfacciamento client-server con il simulatore di propagazione del calore Energy2D ()
  • List of categories

    article article_en article_it C courses fdi lang_en lang_it latex programming project research results robotics software teaching thesis tips