Auto saved by Logseq
This commit is contained in:
parent
a1cd65080c
commit
f3ae3bd955
1 changed files with 115 additions and 0 deletions
|
@ -65,5 +65,120 @@
|
|||
- Inviate il file markdown su accademia@andrefazzi.eu indicando l'indirizzo IP locale della macchina host e allegando alla mail la chiave pubblica che avete inserito nel container per rendere l'accesso *password less*.
|
||||
id:: 654e277f-3f84-4397-907f-debaddb5d90d
|
||||
- Per costruire il servizio si può utilizzare un immagina già pronta oppure costruirla attraverso un Dockerfile. Nel primo caso occorrerà giustificare la scelta di quella particolare immagine.
|
||||
- Converti il seguente script bash in python.
|
||||
|
||||
A partire dallo script generato produci un crash-course di Python da svolgere in massimo 2 ore di lezione in cui vengono messi in risalto i costrutti fondamentali del linguaggio di programmazione.
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
DRY_RUN=0
|
||||
REMOVE_USER=0
|
||||
SMTP_SERVER=""
|
||||
|
||||
# Controlla se l'opzione --dry-run, --rm, --smtp sono state specificate
|
||||
for arg in "$@"
|
||||
do
|
||||
if [ "$arg" == "--dry-run" ]
|
||||
then
|
||||
DRY_RUN=1
|
||||
elif [ "$arg" == "--rm" ]
|
||||
then
|
||||
REMOVE_USER=1
|
||||
elif [[ "$arg" =~ ^--smtp=.* ]]
|
||||
then
|
||||
SMTP_SERVER="${arg#*=}"
|
||||
fi
|
||||
done
|
||||
|
||||
# Controlla se pwgen è installato
|
||||
if ! command -v pwgen &> /dev/null
|
||||
then
|
||||
echo "Il programma pwgen non è installato. Installarlo? (s/n)"
|
||||
read answer
|
||||
if echo "$answer" | grep -iq "^s"
|
||||
then
|
||||
sudo apt-get install -y pwgen
|
||||
else
|
||||
echo "Lo script non può continuare senza pwgen. Uscita."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Legge le credenziali SMTP dal file .env
|
||||
source .env
|
||||
|
||||
echo $SMTP_SERVER
|
||||
echo $SMTP_USER
|
||||
|
||||
# Inizia a leggere gli username da stdin
|
||||
while IFS= read -r username
|
||||
do
|
||||
# Se l'opzione --rm è attiva e l'utente esiste, lo rimuove
|
||||
if [ $REMOVE_USER -eq 1 ] && id -u "$username" >/dev/null 2>&1; then
|
||||
sudo userdel "$username"
|
||||
fi
|
||||
|
||||
# Controlla se l'utente esiste già
|
||||
if id -u "$username" >/dev/null 2>&1; then
|
||||
echo "L'utente $username esiste già. Saltando."
|
||||
continue
|
||||
fi
|
||||
|
||||
# Genera una password
|
||||
password=$(pwgen -s -B 8 1)
|
||||
|
||||
# Se l'opzione --dry-run è attiva, stampa il comando senza eseguirlo
|
||||
if [ $DRY_RUN -eq 1 ]
|
||||
then
|
||||
echo "sudo useradd -m -s /bin/bash -p \"$(openssl passwd -1 $password)\" \"$username\""
|
||||
else
|
||||
# Crea l'utente
|
||||
if sudo useradd -m -s /bin/bash -p "$(openssl passwd -1 $password)" "$username"
|
||||
then
|
||||
echo "$username,$password"
|
||||
# Se l'opzione --smtp è attiva, invia una mail all'utente
|
||||
if [ -n "$SMTP_SERVER" ]
|
||||
then
|
||||
echo "Invio una mail tramite $SMTP_SERVER..."
|
||||
# Popola il template della mail
|
||||
mail_body=$(cat mail.tpl)
|
||||
mail_body=${mail_body//'{USERNAME}'/$username}
|
||||
mail_body=${mail_body//'{PASSWORD}'/$password}
|
||||
echo -e "Subject: Nuovo account\n\n$mail_body" | msmtp --host=$SMTP_SERVER --port=587 --tls=on --tls-starttls=on --user=$SMTP_USER --password=$SMTP_PASS --from=$SMTP_USER posta@andreafazzi.eu
|
||||
fi
|
||||
else
|
||||
echo "Errore nella creazione dell'utente $username. Saltando."
|
||||
fi
|
||||
fi
|
||||
done
|
||||
```
|
||||
Per ogni costrutto fondamentale produci dei semplici esempi. Assicurati che la prima parte del corso contenga le istruzioni basilari per verificare che l'interprete Python sia presente sulla macchina supponendo che lo studente stia utilizzando una distribuzione basata su Debian o, in alternativa, fornisci i passi per installare Python su una distribuzione basata su Debian.
|
||||
|
||||
Non produrre il corso tutto in una volta ma, dopo aver terminato una sezione del corso, aspetta un mio prompt per continuare.
|
||||
|
||||
Non dimenticare di utilizzare lo script convertito come riferimento per gli argomenti trattati e per gli esempi.
|
||||
|
||||
Il corso potrebbe essere strutturato come segue. Formatta l'output generato in Markdown. Aspetta il mio prompt per procedere alla generazione dell'argomento successivo. Gli argomenti principali sono quelli di Livello 3 (`###`) nella strutturazione Markdown riportata sotto.
|
||||
- ### Introduzione a Python (massimo 100 parole)
|
||||
|
||||
* Sottolineare il fatto che Python è un interprete
|
||||
* Raccontare brevemente la storia delle versioni di Python
|
||||
- ### Installazione di Python su Debian (massimo 50 parole)
|
||||
|
||||
* Spiegare come verificare se l'installazione è già presente
|
||||
* Spiegare come installare Python qualora non fosse già presente sul sistema
|
||||
- ### Costrutti fondamentali del linguaggio
|
||||
- #### Variabili (massimo 100 parole di descrizione + esempi)
|
||||
|
||||
* Specificare i principali tipi di variabile
|
||||
- #### Istruzioni (massimo 100 parole di descrizione + esempi)
|
||||
- #### Cicli (massimo 100 parole di descrizione + esempi)
|
||||
- #### Branch condizionali (massimo 100 parole di descrizione + esempi)
|
||||
- #### Strutture di dati (massimo 100 parole di descrizione + esempi)
|
||||
- ### Esercizi (massimo 3 esercizi)
|
||||
- ### Compito di realtà
|
||||
|
||||
Assegna un compito di realtà da svolgere in Python che sia inerente al tema della Cybersecurity.
|
||||
## Lezione 10 (4 ore)
|
||||
- Verifica
|
Loading…
Reference in a new issue