BashQuest per esercitazioni sui comandi Unix
Sulla piattaforma SSHCode è installato il programma bashquest, che permette di svolgere in autonomia delle esercitazioni pratiche sull’uso dei comandi Unix.
Il codice sorgente di bashquest e la documentazione sufficiente per utilizzarlo è disponibile sul repository GitHub del progetto.
Grazie alla disponibilità del codice sorgente, è possibile installare bashquest anche su un proprio computer, ma dal momento che servono altri strumenti per eseguirlo (in particolare, un interprete Python con una versione adatta), il modo più indicato di utilizzarlo è tramite la versione installata su SSHCode.
ATTENZIONE: alcune delle sfide presentate da bashquest richiedono conoscenze che potrebbero andare oltre quanto spiegato a lezione; tali sfide si possono tranquillamente saltare.
Utilizzo
I comandi principali sono illustrati di seguito.
NOTA: una importante differenza tra l’installazione su SSHCode e la documentazione su GitHub, è che per invocare il programma su SSHCode si usa semplicemente il comando bashquest, mentre una propria installazione richiederebbe python bashquest.py.
Inizio di una nuova prova
Per iniziare una nuova sessione da zero:
bashquest start
Questo comando creerà la directory workspace nella directory corrente e presenterà la prima sfida.
Submission di una risposta
Per inviare la risposta della sfida corrente:
bashquest submit [flag]
NOTA: la risposta (flag) è una stringa contenuta da qualche parte nella directory workspace popolato da bashquest, NON il comando richiesto per recuperare la flag stessa.
La flag non è necessaria in caso di sfide di tipo “put-the-flag”, ovvero quando all’utente viene richiesto di creare/inserire qualcosa nell’area di lavoro. In tal caso basta il comando “submit”.
Stampa l’elenco delle sfide
Per elencare tutte le sfide disponibili:
bashquest list
Imposta la sfida attuale
Per passare ad un’altra sfida:
bashquest goto <numero>
Ogni volta che viene impostata una sfida utilizzando “goto”, la configurazione della sfida stessa (directory, file, ecc.) viene rigenerata in modo casuale. Quindi tornando ad una stessa sfida è probabile che ci si trovi a lavorare con dati differenti.
L’opzione --seed, seguita da un numero intero, consente di impostare un seme per il generatore di numeri casuali, in modo che la stessa configurazione possa essere riutilizzata.
Il testo della sfida attuale può essere stampato in qualsiasi momento con:
bashquest challenge
Per terminare una sessione, cancellando completamente la sfida corrente e perdendo traccia delle sfide superate:
bashquest done
Non si abbia timore di creare e cancellare gli workspace a piacimento: trattandosi di un programma per l’auto-apprendimento, si possono tranquillamente saltare (col comado goto) delle sfide già svolte o difficili.