1. Elaborazione dei dati di testo
Oggi mettiamo insieme tutte queste conoscenze e le applichiamo nella pratica per elaborare i dati di testo e aggiornare il sistema. Scopriremo scenari d'uso reali: dall'analisi dei log di sistema all'automazione dell'installazione e configurazione dei pacchetti.
Compito 1: Trovare errori nel log
Scenario: Immagina di essere un amministratore di sistema e hai bisogno di capire rapidamente cosa succede nel sistema. Per farlo, analizzeremo i log di sistema (/var/log/syslog).
Passo 1: Filtrare per parole chiave
Iniziamo cercando le righe legate agli errori usando grep:
grep "error" /var/log/syslog
Oh, qualcosa abbiamo trovato! Ma miglioriamo. Supponiamo che tu voglia ignorare le maiuscole e minuscole (sia ERROR che error):
grep -i "error" /var/log/syslog
Ora vedrai più corrispondenze. Ma a volte bisogna trovare tutto ciò che non è legato agli errori:
grep -v "error" /var/log/syslog
Passo 2: Semplificare l'output con cut
Supponiamo che ti interessi solo il timestamp e il messaggio. Estrarre le colonne corrispondenti:
grep "error" /var/log/syslog | cut -d' ' -f1,2,3,5-
Qui usiamo cut per dividere le righe in base agli spazi -d' ', selezionando le colonne 1, 2, 3 (tempo) e il testo rimanente.
Compito 2: Contare la frequenza degli eventi
Ora vogliamo capire con quale frequenza si verificano gli errori. Combiniamo grep, cut e sort con uniq:
grep "error" /var/log/syslog | cut -d' ' -f5 | sort | uniq -c
Questo comando:
- Cerca righe con errori usando
grep. - Estrae solo le informazioni sulla fonte dell'errore con
cut. - Ordina i dati con
sortper permettere auniqdi contare il numero di ripetizioni di ogni riga.
Il risultato sarà simile a questo:
10 systemd
7 kernel
5 cron
Gli errori da systemd sono i più frequenti. È ora di trarre conclusioni!
2. Caricamento ed elaborazione di dati esterni
Scenario: Analisi dei dati da una fonte esterna
Supponiamo di dover scaricare un file di testo con dati (ad esempio un file di log) da un web server e analizzarlo. Lo faremo passo dopo passo.
Passo 1: Scaricare il file
Per prima cosa scarichiamo il file usando wget:
wget -O data.log http://example.com/logs/data.log
Il file è stato scaricato e salvato come data.log. In caso di errore durante il download, aggiungiamo la ripresa:
wget -c -O data.log http://example.com/logs/data.log
Se preferisci curl:
curl -o data.log http://example.com/logs/data.log
Passo 2: Ricerca delle informazioni
Ora cerchiamo le righe che contengono uno specifico pattern, ad esempio WARNING:
grep "WARNING" data.log
Passo 3: Formattazione dei dati con awk
Supponiamo che il log contenga tre colonne: data, ora e messaggio. Vogliamo visualizzare solo la data e il messaggio:
awk '{print $1, $3}' data.log
E se dobbiamo filtrare le righe in cui il messaggio contiene la parola error, possiamo aggiungere una condizione:
awk '/error/ {print $1, $3}' data.log
3. Aggiornamento del sistema con apt-get e yum
Ora passiamo a compiti più "di sistema". L'aggiornamento dei pacchetti è un processo vitale per mantenere la sicurezza e la stabilità del sistema. Vediamo come si fa.
Scenario: Aggiornamento del sistema
Passo 1: Aggiornamento della lista dei pacchetti
Per distribuzioni basate su Debian:
sudo apt-get update
Per distribuzioni basate su RedHat:
sudo yum check-update
Passo 2: Installazione degli aggiornamenti
Debian-based:
sudo apt-get upgrade
RedHat-based:
sudo yum update
Passo 3: Installazione di un nuovo pacchetto
Per esempio, per installare l'editor di testo vim:
sudo apt-get install vim
sudo yum install vim
Consiglio utile
Se sai esattamente quale pacchetto vuoi installare, ma non sei sicuro del suo nome, usa apt search o yum search:
apt search nome_pacchetto
yum search nome_pacchetto
4. Compito finale
Compito: Automazione dell'aggiornamento e dell'elaborazione dei dati
- Crea uno script bash, che:
- Aggiorna il sistema;
- Scarica un file di testo (ad esempio, un log);
- Analizza questo file per trovare errori;
- Salva i risultati dell'analisi in un nuovo file.
Ecco un esempio di tale script:
# Passaggio 1: Aggiornamento del sistema
echo "Aggiornamento del sistema..."
sudo apt-get update && sudo apt-get -y upgrade
# Passaggio 2: Scaricare il file
echo "Scarichiamo il file di log..."
wget -O data.log http://example.com/logs/data.log
# Passaggio 3: Analisi del file
echo "Analizziamo il file di log per trovare gli errori..."
grep "ERROR" data.log | cut -d' ' -f1,5- | sort | uniq -c > analysis.log
echo "Analisi completata. Risultati salvati in analysis.log"
Salva questo script, ad esempio, come update_and_analyze.sh, imposta i permessi di esecuzione:
chmod +x update_and_analyze.sh
E avvialo:
./update_and_analyze.sh
Attenzione: errori comuni
Se vedi un messaggio di "accesso negato", assicurati di eseguire lo script come utente con privilegi
sudo.Se
wgetocurlnon sono installati, aggiungi la loro installazione all'inizio dello script:sudo apt-get install -y wget
A cosa serve in pratica?
Queste competenze ti torneranno utili non solo al lavoro, ma anche nei colloqui. Sapere individuare errori nei log, filtrare i dati e avviare aggiornamenti di sistema è molto apprezzato tra gli amministratori e ingegneri. Gli script permettono di automatizzare le attività, risparmiando tempo e garantendo l'assenza di errori umani.
P.S. Ricorda, nel mondo reale ti troverai di fronte a compiti in cui dovrai combinare comandi, modificare output e configurare automaticamente il sistema. L'esempio di oggi è solo la punta dell'iceberg della tua futura pratica.
GO TO FULL VERSION