More tools added
This commit is contained in:
@@ -58,3 +58,323 @@ case $optiune in
|
||||
done
|
||||
;;
|
||||
|
||||
2)
|
||||
# =============================================================================
|
||||
# SCRIPT 2: BACKUP AUTOMAT
|
||||
# Creează backup pentru un director specificat
|
||||
# CONCEPTE: funcții, date, comprimare, validare input
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=== BACKUP AUTOMAT ==="
|
||||
echo ""
|
||||
|
||||
# Funcție pentru backup
|
||||
# Funcțiile fac codul reutilizabil
|
||||
face_backup() {
|
||||
local sursa=$1
|
||||
local destinatie=$2
|
||||
local data=$(date +%Y%m%d_%H%M%S)
|
||||
local nume_backup="backup_${data}.tar.gz"
|
||||
|
||||
echo "Creez backup pentru: $sursa"
|
||||
echo "Destinatie: $destinatie/$nume_backup"
|
||||
|
||||
# tar = arhivare fișiere
|
||||
# -czf = compress (gzip), create, file
|
||||
tar -czf "$destinatie/$nume_backup" "$sursa" 2>/dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Backup creat cu succes!"
|
||||
echo "Dimensiune: $(du -h "$destinatie/$nume_backup" | cut -f1)"
|
||||
else
|
||||
echo "✗ Eroare la crearea backup-ului"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Exemplu de utilizare
|
||||
read -p "Introdu directorul pentru backup (ex: /home/user/documente): " dir_sursa
|
||||
|
||||
if [ ! -d "$dir_sursa" ]; then
|
||||
echo "Eroare: Directorul nu există!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read -p "Director destinatie backup (ex: /home/user/backups): " dir_dest
|
||||
|
||||
# Creează directorul de destinație dacă nu există
|
||||
mkdir -p "$dir_dest"
|
||||
|
||||
face_backup "$dir_sursa" "$dir_dest"
|
||||
;;
|
||||
|
||||
3)
|
||||
# =============================================================================
|
||||
# SCRIPT 3: VERIFICARE STATUS SERVERE
|
||||
# Verifică dacă serverele sunt online (ping)
|
||||
# CONCEPTE: array-uri, for loop, exit codes
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=== VERIFICARE STATUS SERVERE ==="
|
||||
echo ""
|
||||
|
||||
# Array simplu cu liste de servere
|
||||
# () = array în bash
|
||||
servere=(
|
||||
"google.com"
|
||||
"github.com"
|
||||
"stackoverflow.com"
|
||||
"localhost"
|
||||
)
|
||||
|
||||
echo "Verific ${#servere[@]} servere..." # ${#array[@]} = număr elemente
|
||||
echo ""
|
||||
|
||||
# for loop prin array
|
||||
for server in "${servere[@]}"; do
|
||||
echo -n "Verific $server... "
|
||||
|
||||
# ping -c 2 = trimite 2 pachete
|
||||
# -W 2 = timeout 2 secunde
|
||||
# &>/dev/null = ascunde output-ul
|
||||
if ping -c 2 -W 2 "$server" &>/dev/null; then
|
||||
echo "✓ ONLINE"
|
||||
else
|
||||
echo "✗ OFFLINE"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Verificare completată!"
|
||||
;;
|
||||
|
||||
4)
|
||||
# =============================================================================
|
||||
# SCRIPT 4: CURĂȚARE FIȘIERE VECHI
|
||||
# Șterge fișiere mai vechi de X zile dintr-un director
|
||||
# CONCEPTE: find, confirmări utilizator, numărare
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=== CURĂȚARE FIȘIERE VECHI ==="
|
||||
echo ""
|
||||
|
||||
read -p "Director de curățat (ex: /tmp): " director
|
||||
|
||||
if [ ! -d "$director" ]; then
|
||||
echo "Eroare: Directorul nu există!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read -p "Șterge fișiere mai vechi de câte zile? (ex: 30): " zile
|
||||
|
||||
# Verifică dacă e un număr valid
|
||||
if ! [[ "$zile" =~ ^[0-9]+$ ]]; then
|
||||
echo "Eroare: Trebuie să introduci un număr!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Căutare fișiere mai vechi de $zile zile în $director..."
|
||||
|
||||
# find = caută fișiere
|
||||
# -type f = doar fișiere (nu directoare)
|
||||
# -mtime +N = modificat acum N+ zile
|
||||
fisiere_vechi=$(find "$director" -type f -mtime +$zile 2>/dev/null)
|
||||
|
||||
numar_fisiere=$(echo "$fisiere_vechi" | grep -v '^$' | wc -l)
|
||||
|
||||
if [ $numar_fisiere -eq 0 ]; then
|
||||
echo "Nu am găsit fișiere mai vechi de $zile zile."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Am găsit $numar_fisiere fișiere vechi:"
|
||||
echo "$fisiere_vechi" | head -10 # Arată primele 10
|
||||
|
||||
if [ $numar_fisiere -gt 10 ]; then
|
||||
echo "... și alte $((numar_fisiere - 10)) fișiere"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
read -p "Vrei să ștergi aceste fișiere? (da/nu): " confirmare
|
||||
|
||||
if [ "$confirmare" = "da" ]; then
|
||||
# Loop prin fișiere și șterge-le
|
||||
while IFS= read -r fisier; do
|
||||
if [ -n "$fisier" ]; then
|
||||
rm -f "$fisier"
|
||||
echo "Șters: $fisier"
|
||||
fi
|
||||
done <<< "$fisiere_vechi"
|
||||
|
||||
echo ""
|
||||
echo "✓ Curățare completă!"
|
||||
else
|
||||
echo "Operațiune anulată."
|
||||
fi
|
||||
;;
|
||||
|
||||
5)
|
||||
# =============================================================================
|
||||
# SCRIPT 5: CALCULATOR SIMPLU
|
||||
# Calculator cu operații matematice de bază
|
||||
# CONCEPTE: case, operații aritmetice, loop infinit
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=== CALCULATOR SIMPLU ==="
|
||||
echo ""
|
||||
|
||||
# Loop infinit (until break)
|
||||
while true; do
|
||||
echo "Operații disponibile:"
|
||||
echo "1. Adunare (+)"
|
||||
echo "2. Scădere (-)"
|
||||
echo "3. Înmulțire (*)"
|
||||
echo "4. Împărțire (/)"
|
||||
echo "5. Ieșire"
|
||||
echo ""
|
||||
|
||||
read -p "Alege operația (1-5): " op
|
||||
|
||||
# break = ieșire din loop
|
||||
[ "$op" = "5" ] && break
|
||||
|
||||
read -p "Primul număr: " num1
|
||||
read -p "Al doilea număr: " num2
|
||||
|
||||
# case = switch statement
|
||||
case $op in
|
||||
1)
|
||||
rezultat=$((num1 + num2))
|
||||
echo "Rezultat: $num1 + $num2 = $rezultat"
|
||||
;;
|
||||
2)
|
||||
rezultat=$((num1 - num2))
|
||||
echo "Rezultat: $num1 - $num2 = $rezultat"
|
||||
;;
|
||||
3)
|
||||
rezultat=$((num1 * num2))
|
||||
echo "Rezultat: $num1 * $num2 = $rezultat"
|
||||
;;
|
||||
4)
|
||||
if [ $num2 -eq 0 ]; then
|
||||
echo "Eroare: Împărțire la zero!"
|
||||
else
|
||||
# bc = calculator pentru operații cu virgulă
|
||||
rezultat=$(echo "scale=2; $num1 / $num2" | bc)
|
||||
echo "Rezultat: $num1 / $num2 = $rezultat"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "Operație invalidă!"
|
||||
;;
|
||||
esac
|
||||
echo ""
|
||||
done
|
||||
|
||||
echo "La revedere!"
|
||||
;;
|
||||
|
||||
6)
|
||||
# =============================================================================
|
||||
# SCRIPT 6: MONITOR PROCESE
|
||||
# Afișează procesele care consumă cele mai multe resurse
|
||||
# CONCEPTE: ps, sort, top procese
|
||||
# =============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=== MONITOR PROCESE ==="
|
||||
echo ""
|
||||
|
||||
echo "Top 10 procese după utilizare CPU:"
|
||||
echo ""
|
||||
|
||||
# ps = process status
|
||||
# aux = all users, user-oriented, include processes without terminal
|
||||
# --sort = sortează după o coloană
|
||||
# head = primele N linii
|
||||
|
||||
ps aux --sort=-%cpu | head -11
|
||||
|
||||
echo ""
|
||||
echo "---"
|
||||
echo ""
|
||||
echo "Top 10 procese după utilizare memorie:"
|
||||
echo ""
|
||||
|
||||
ps aux --sort=-%mem | head -11
|
||||
|
||||
echo ""
|
||||
read -p "Vrei să oprești vreun proces? (da/nu): " raspuns
|
||||
|
||||
if [ "$raspuns" = "da" ]; then
|
||||
read -p "Introdu PID-ul procesului: " pid
|
||||
|
||||
# Verifică dacă procesul există
|
||||
if ps -p $pid > /dev/null 2>&1; then
|
||||
echo "Opresc procesul $pid..."
|
||||
kill $pid
|
||||
echo "✓ Procesul a fost oprit"
|
||||
else
|
||||
echo "Procesul cu PID $pid nu există"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Opțiune invalidă!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# =============================================================================
|
||||
# REZUMAT CONCEPTE BASH ÎNVĂȚATE:
|
||||
# =============================================================================
|
||||
#
|
||||
# 1. LOOP-URI:
|
||||
# - while read: citește linie cu linie
|
||||
# - for in: iterează prin liste/array-uri
|
||||
# - while true: loop infinit (până la break)
|
||||
#
|
||||
# 2. CONDIȚII:
|
||||
# - if [ conditie ]; then ... fi
|
||||
# - case variabila in ... esac (switch)
|
||||
# - Operatori: -eq (egal), -gt (mai mare), -lt (mai mic)
|
||||
# - Operatori fișiere: -d (director), -f (fișier), -e (există)
|
||||
#
|
||||
# 3. ARRAY-URI:
|
||||
# - Declarare: arr=(val1 val2 val3)
|
||||
# - Acces: ${arr[0]}
|
||||
# - Toate elementele: ${arr[@]}
|
||||
# - Lungime: ${#arr[@]}
|
||||
#
|
||||
# 4. FUNCȚII:
|
||||
# - Declarare: function_name() { ... }
|
||||
# - Parametri: $1, $2, $3...
|
||||
# - Variabile locale: local var=value
|
||||
#
|
||||
# 5. COMENZI UTILE:
|
||||
# - df: disk free (spațiu)
|
||||
# - du: disk usage (mărime fișiere)
|
||||
# - ps: process status
|
||||
# - find: caută fișiere
|
||||
# - grep: filtrează text
|
||||
# - awk: procesare coloane
|
||||
# - sed: editare text
|
||||
#
|
||||
# 6. OPERATORI:
|
||||
# - Aritmetică: $((expresie))
|
||||
# - Strings: -z (gol), -n (nu e gol)
|
||||
# - Comparații: -eq, -ne, -gt, -lt, -ge, -le
|
||||
#
|
||||
# 7. REDIRECTĂRI:
|
||||
# - > : scrie în fișier (suprascrie)
|
||||
# - >> : append la fișier
|
||||
# - 2>&1 : redirectează error la output
|
||||
# - &>/dev/null : ascunde tot output-ul
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user