Compare commits

...

6 Commits

Author SHA1 Message Date
8c87f7388f backup script added 2025-12-16 12:02:24 +00:00
6c1a198eda update script fix 2025-12-16 11:57:40 +00:00
dd010c69ec update script added 2025-12-16 11:56:25 +00:00
972fdd761a more clean 2025-12-16 11:54:28 +00:00
524d4b2f05 small fix 2025-12-13 16:51:32 +00:00
039c75045d More tools added 2025-12-13 16:49:11 +00:00
6 changed files with 478 additions and 3 deletions

25
bash_scripts/backup.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
# Check to make sure the user has entered exactly two arguments.
if [ $# -ne 2 ]
then
echo "Usage backup.sh <source_directory> <target_directory>"
echo "Please try again."
exit 1
fi
# Check to see if rsync is installed
if ! command -v rsync > /dev/null 2>&1
then
echo "This script requires rsync to be installed."
echo "Please use your distribution's package manager to install and try again."
exit 2
fi
# Capture the current date and store it to the format YYYY-MM-DD
current_date=$(date +%Y-%m-%d_%H-%M-%S)
rsync_options="-avb --backup-dir $2/$current_date --delete "
$(which rsync) $rsync_options $1 $2/current >> backup_$current_date.log

View File

@@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# ============================================================================= # =============================================================================
# COLECȚIE DE SCRIPTURI BASH PENTRU DEVOPS JUNIOR # COLECȚIE DE SCRIPTURI BASH
# Exemple practice cu explicații pentru învățare # Exemple practice cu explicații pentru învățare
# ============================================================================= # =============================================================================
@@ -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
#
# =============================================================================

105
bash_scripts/system_health.sh Executable file
View File

@@ -0,0 +1,105 @@
#!/bin/bash
#####################################################
# System Health Monitor
# Author: [Numele Tău]
# Description: Verifică starea sistemului și generează raport
#####################################################
# Culori pentru output fancy
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Header fancy
clear
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ SYSTEM HEALTH MONITOR v1.0 ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
echo ""
echo -e "${GREEN}📊 Generez raportul...${NC}"
echo ""
# 1. Informații sistem
echo -e "${YELLOW}━━━ 💻 INFORMAȚII SISTEM ━━━${NC}"
echo -e "Hostname: ${GREEN}$(hostname)${NC}"
echo -e "Utilizator: ${GREEN}$(whoami)${NC}"
echo -e "Data: ${GREEN}$(date '+%Y-%m-%d %H:%M:%S')${NC}"
echo -e "Uptime: ${GREEN}$(uptime -p)${NC}"
echo ""
# 2. CPU Usage
echo -e "${YELLOW}━━━ ⚙️ CPU USAGE ━━━${NC}"
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
echo -e "Utilizare CPU: ${GREEN}${cpu_usage}%${NC}"
if (( $(echo "$cpu_usage > 80" | bc -l) )); then
echo -e "${RED}⚠️ ATENȚIE: CPU usage ridicat!${NC}"
else
echo -e "${GREEN}✓ CPU în parametri normali${NC}"
fi
echo ""
# 3. Memorie
echo -e "${YELLOW}━━━ 🧠 MEMORIE ━━━${NC}"
mem_total=$(free -h | awk '/^Mem:/ {print $2}')
mem_used=$(free -h | awk '/^Mem:/ {print $3}')
mem_percent=$(free | awk '/^Mem:/ {printf "%.0f", $3/$2 * 100}')
echo -e "Total: ${GREEN}${mem_total}${NC}"
echo -e "Folosită: ${GREEN}${mem_used}${NC} (${mem_percent}%)"
if [ "$mem_percent" -gt 80 ]; then
echo -e "${RED}⚠️ ATENȚIE: Memorie insuficientă!${NC}"
else
echo -e "${GREEN}✓ Memorie OK${NC}"
fi
echo ""
# 4. Disc
echo -e "${YELLOW}━━━ 💾 SPAȚIU DISC ━━━${NC}"
df -h | grep -E '^/dev/' | while read line; do
usage=$(echo $line | awk '{print $5}' | cut -d'%' -f1)
mount=$(echo $line | awk '{print $6}')
if [ "$usage" -gt 80 ]; then
echo -e "${RED}⚠️ $mount: ${usage}% (PLIN!)${NC}"
else
echo -e "${GREEN}$mount: ${usage}%${NC}"
fi
done
echo ""
# 5. Top 5 procese (CPU)
echo -e "${YELLOW}━━━ 🔥 TOP 5 PROCESE (CPU) ━━━${NC}"
ps aux --sort=-%cpu | head -6 | tail -5 | awk '{printf "%-20s %5s%%\n", $11, $3}'
echo ""
# 6. Verificare servicii importante (opțional)
echo -e "${YELLOW}━━━ 🔧 STATUS SERVICII ━━━${NC}"
# Exemplu: verifică serviciul SSH
if systemctl is-active --quiet sshd 2>/dev/null || systemctl is-active --quiet ssh 2>/dev/null; then
echo -e "${GREEN}✓ SSH: Running${NC}"
else
echo -e "${RED}✗ SSH: Stopped${NC}"
fi
# Footer
echo ""
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ Raport generat cu succes! ✓ ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
echo ""
# Opțiune salvare raport
read -p "Salvezi raportul în fișier? (y/n): " save_choice
if [ "$save_choice" = "y" ] || [ "$save_choice" = "Y" ]; then
report_file="system_health_$(date +%Y%m%d_%H%M%S).txt"
$0 2>&1 | grep -v "Salvezi raportul" > "$report_file"
echo -e "${GREEN}✓ Raport salvat: $report_file${NC}"
fi
exit 0

27
bash_scripts/update.sh Executable file
View File

@@ -0,0 +1,27 @@
#!/bin/bash
release_file=/etc/os-release
logfile=/var/log/updater.log
errorlog=/var/log/updater_errors.log
check_exit_status() {
local status=$1
local command_name=$2
if [ $status -ne 0 ]
then
echo "An error occurred during $command_name, please check the $errorlog file."
exit 1
fi
}
if grep -q "Ubuntu" $release_file || grep -q "Debian" $release_file
then
# The host is Debian or Ubuntu
# Run the apt version of the command
sudo apt update 1>>$logfile 2>>$errorlog
check_exit_status $? "apt update"
sudo apt dist-upgrade -y 1>>$logfile 2>>$errorlog
check_exit_status $? "apt dist-upgrade"
echo "Update completed successfully!"
fi

View File

@@ -1 +0,0 @@
Formular contact

View File

@@ -1 +0,0 @@
Fisier 2 test