More tools added
This commit is contained in:
@@ -58,3 +58,323 @@ case $optiune in
|
|||||||
done
|
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