#!/bin/bash

# Funzione per visualizzare le informazioni di sistema
show_system_info() {
    clear

    # Connessione Internet
    ping -c 1 google.com &> /dev/null && echo "Internet: Connessa" || echo "Internet: Disconnessa"

    # Tipo di sistema operativo
    os=$(uname -o)
    echo "Tipo di sistema operativo: $os"

    # Nome e versione del sistema operativo
    os_name=$(grep -m 1 -oP '(?<=^NAME=").+(?=")' /etc/os-release | tr -d '"')
    os_version=$(grep -m 1 -oP '(?<=^VERSION=").+(?=")' /etc/os-release | tr -d '"')
    echo "Nome del sistema operativo: $os_name"
    echo "Versione del sistema operativo: $os_version"

    # Architettura
    architecture=$(uname -m)
    echo "Architettura: $architecture"

    # Rilascio del kernel
    kernel=$(uname -r)
    echo "Rilascio del kernel: $kernel"

    # Hostname
    hostname=$(hostname)
    echo "Hostname: $hostname"

    # Informazioni sulle interfacce di rete
    echo "Informazioni sulle interfacce di rete:"
    ip addr show | grep -E 'inet |ether' | awk '{
        if ($1 == "inet") {
            split($2, ip, "/")
            printf "  %-10s Indirizzo IP: %s\n", $NF, ip[1]
        } else if ($1 == "ether") {
            printf "  %-10s Indirizzo MAC: %s\n", $NF, $2
        }
    }'

    # Indirizzo IP esterno
    if command -v wget &> /dev/null; then
        external_ip=$(wget -qO- ipecho.net/plain)
        echo "Indirizzo IP esterno: $external_ip"
    else
        echo "Avviso: wget non è installato. Impossibile ottenere l'indirizzo IP esterno."
    fi

    # Server DNS
    nameservers=$(grep -oP '(?<=^nameserver ).*' /etc/resolv.conf | paste -sd ' ')
    echo "Server DNS: $nameservers"

    # Utenti connessi
    users=$(who | cut -d' ' -f1 | sort -u | paste -sd ', ')
    echo "Utenti connessi: $users"

    # Utilizzo RAM e SWAP
    ram_info=$(free -h | grep -E 'Mem|Swap' | awk '{print $1 ": " $3 "/" $2}')
    echo "Utilizzo RAM e SWAP:"
    echo "$ram_info" | sed 's/^/  /g'

    # Utilizzo disco
    disk_info=$(df -h | grep '^/dev' | awk '{print $6 ": " $3 "/" $2 " (" $5 ")"}')
    echo "Utilizzo disco:"
    echo "$disk_info" | sed 's/^/  /g'

    # Partizioni su disco
    echo "Partizioni su disco:"
    lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL | grep -v 'loop' | sed 's/^/  /g'

    # Carico medio
    load_avg=$(uptime | awk -F'[a-z]:' '{ print $2}')
    echo "Carico medio: $load_avg"

    # Tempo di attività del sistema
    uptime=$(uptime -p | cut -d' ' -f2-)
    echo "Tempo di attività del sistema: $uptime"
}

# Gestione degli argomenti di riga di comando
if [ "$1" == "-i" ]; then
    script_path="$(readlink -f "$0")"
    sudo cp "$script_path" /usr/local/bin/linux-status
    echo "Script installato. Eseguire 'linux-status' per avviarlo."
elif [ "$1" == "-v" ]; then
    echo "Versione dello script: 1.3"
else
    show_system_info | tee -a status.txt
fi
