Uno script che esegue il backup di una directory specificata e la archivia in un file con data e ora nel nome.
Esempio di script:
#!/bin/bash
# Directory da fare il backup
SOURCE_DIR="/home/utente/Documents"
# Directory di destinazione per il backup
BACKUP_DIR="/home/utente/backup"
# Data corrente per il nome del file di backup
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# Creazione del file di backup
tar -czf $BACKUP_DIR/backup_$DATE.tar.gz -C $SOURCE_DIR .
# Verifica se il backup è stato creato correttamente
if [ $? -eq 0 ]; then
echo "Backup riuscito con successo: $BACKUP_DIR/backup_$DATE.tar.gz"
else
echo "Errore durante il backup."
fi
Cosa fa:
date
per aggiungere la data e l’ora al nome del file di backup.tar
per creare un file .tar.gz
.$?
.Un esempio di script che scarica un file, lo decomprime e poi lo sposta in una directory specifica.
Esempio di script:
#!/bin/bash
# URL del file da scaricare
URL="http://esempio.com/file.tar.gz"
# Directory dove salvare il file scaricato
DOWNLOAD_DIR="/home/utente/Downloads"
# Directory di destinazione per i file estratti
EXTRACT_DIR="/home/utente/estratti"
# Scarica il file
wget $URL -P $DOWNLOAD_DIR
# Estrai il file tar.gz
tar -xzvf $DOWNLOAD_DIR/$(basename $URL) -C $EXTRACT_DIR
# Verifica se l'estrazione ha avuto successo
if [ $? -eq 0 ]; then
echo "File scaricato e estratto con successo."
else
echo "Errore durante il download o l'estrazione del file."
fi
Cosa fa:
wget
per scaricare il file dal URL specificato..tar.gz
con tar
.basename
per ottenere solo il nome del file dal URL.Uno script che legge un file di testo e conta la frequenza di ogni parola presente nel file.
Esempio di script:
#!/bin/bash
# File di input
FILE="/home/utente/testo.txt"
# Verifica se il file esiste
if [ ! -f "$FILE" ]; then
echo "Il file non esiste."
exit 1
fi
# Conta la frequenza di ogni parola nel file
echo "Frequenza delle parole:"
cat $FILE | tr -s '[:space:]' '\n' | sort | uniq -c | sort -nr
Cosa fa:
tr
per sostituire gli spazi con i caratteri di nuova linea, separando ogni parola su una nuova riga.sort
, quindi conta le occorrenze con uniq -c
.Uno script che monitora l’utilizzo del disco e della memoria del sistema, inviando un’email se un limite (ad esempio, l’80% di utilizzo del disco) viene superato.
Esempio di script:
#!/bin/bash
# Limite per l'utilizzo del disco (80%)
DISK_LIMIT=80
# Limite per l'utilizzo della memoria (80%)
MEMORY_LIMIT=80
# Ottieni l'utilizzo del disco
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
# Ottieni l'utilizzo della memoria
MEMORY_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}' | sed 's/\..*//')
# Funzione per inviare email
send_email() {
echo "Attenzione: Il limite di utilizzo del sistema è stato superato!" | mail -s "Allarme Sistema" tuo@email.com
}
# Controlla se l'utilizzo del disco è sopra il limite
if [ $DISK_USAGE -gt $DISK_LIMIT ]; then
send_email
echo "Allarme: Utilizzo del disco al $DISK_USAGE%"
fi
# Controlla se l'utilizzo della memoria è sopra il limite
if [ $MEMORY_USAGE -gt $MEMORY_LIMIT ]; then
send_email
echo "Allarme: Utilizzo della memoria al $MEMORY_USAGE%"
fi
Cosa fa:
df
per ottenere l’utilizzo del disco e free
per ottenere l’utilizzo della memoria.mail
.Uno script che verifica se un servizio (come Apache) è in esecuzione e lo riavvia se è fermo.
Esempio di script:
#!/bin/bash
# Servizio da monitorare
SERVICE="apache2"
# Verifica se il servizio è attivo
if systemctl is-active --quiet $SERVICE; then
echo "$SERVICE è in esecuzione."
else
echo "$SERVICE non è attivo. Avvio del servizio..."
systemctl start $SERVICE
if [ $? -eq 0 ]; then
echo "$SERVICE è stato avviato con successo."
else
echo "Errore durante l'avvio di $SERVICE."
fi
fi
Cosa fa:
systemctl is-active
per verificare se il servizio Apache è in esecuzione.systemctl start
.Uno script che esegue più comandi in parallelo, utile per task che non dipendono l’uno dall’altro, per velocizzare il processo.
Esempio di script:
#!/bin/bash
# Esegui i comandi in parallelo
echo "Inizio delle operazioni..."
command1 &
command2 &
command3 &
# Attendi che tutti i comandi terminino
wait
echo "Tutti i comandi sono stati eseguiti."
Cosa fa:
command1
, command2
e command3
vengono eseguiti in parallelo utilizzando &
.wait
blocca l’esecuzione dello script fino a quando tutti i comandi in background non sono terminati.