Compare commits
6 Commits
37a2418978
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c87f7388f | |||
| 6c1a198eda | |||
| dd010c69ec | |||
| 972fdd761a | |||
| 524d4b2f05 | |||
| 039c75045d |
25
bash_scripts/backup.sh
Executable file
25
bash_scripts/backup.sh
Executable 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
|
||||||
@@ -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
105
bash_scripts/system_health.sh
Executable 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
27
bash_scripts/update.sh
Executable 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
|
||||||
@@ -1 +0,0 @@
|
|||||||
Formular contact
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Fisier 2 test
|
|
||||||
Reference in New Issue
Block a user