33800 Docs

← Retour
#!/bin/bash # =========================================== # MOTD - PVE (Hyperviseur + Serveur NFS) # =========================================== # Couleurs CYAN='\033[0;36m' GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' DIM='\033[2m' BOLD='\033[1m' NC='\033[0m' echo -e "${CYAN}" cat << 'EOF' ╔══════════════════════════════════════════════════════════════════╗ ║ 🖥️ PVE - Hyperviseur + Serveur NFS ║ ╠══════════════════════════════════════════════════════════════════╣ EOF echo -e "${NC}" # === ZFS STATUS === echo -e "${BOLD} 💾 ZFS POOL${NC}" POOL_STATUS=$(sudo zpool status stock_36to 2>/dev/null) POOL_STATE=$(echo "$POOL_STATUS" | grep "state:" | awk '{print $2}') POOL_ERRORS=$(echo "$POOL_STATUS" | grep "errors:" | cut -d: -f2) if [ "$POOL_STATE" = "ONLINE" ]; then echo -e " Status: ${GREEN}✅ ONLINE${NC} (RAIDZ2, 5 disques)" else echo -e " Status: ${RED}❌ $POOL_STATE${NC}" fi # Espace ZFS POOL_INFO=$(sudo zpool list stock_36to -H 2>/dev/null) POOL_SIZE=$(echo "$POOL_INFO" | awk '{print $2}') POOL_ALLOC=$(echo "$POOL_INFO" | awk '{print $3}') POOL_CAP=$(echo "$POOL_INFO" | awk '{print $8}') echo -e " Espace: ${POOL_ALLOC} / ${POOL_SIZE} (${POOL_CAP})" # Erreurs disques DISK_ERRORS=$(echo "$POOL_STATUS" | grep -E "^\s+sd[a-z]" | awk '($3 != "0" || $4 != "0" || $5 != "0") && $3 ~ /^[0-9]+$/ {print $1": R:"$3" W:"$4" C:"$5}') if [ -n "$DISK_ERRORS" ]; then echo -e " ${YELLOW}⚠️ Erreurs disques:${NC}" echo "$DISK_ERRORS" | while read line; do echo -e " ${YELLOW}$line${NC}" done else echo -e " Erreurs: ${GREEN}Aucune${NC}" fi echo "" # === NFS STATUS === echo -e "${BOLD} 📤 NFS EXPORTS${NC}" NFS_RUNNING=$(systemctl is-active nfs-server 2>/dev/null) if [ "$NFS_RUNNING" = "active" ]; then echo -e " Service: ${GREEN}✅ actif${NC}" EXPORTS=$(sudo exportfs -v 2>/dev/null | grep -c "/stock_36to") echo -e " Exports: ${EXPORTS} partage(s)" # Clients connectés CLIENTS=$(sudo ss -tn state established '( dport = :2049 or sport = :2049 )' 2>/dev/null | grep -v "State" | wc -l) echo -e " Clients NFS: ${CLIENTS} connecté(s)" else echo -e " Service: ${RED}❌ inactif${NC}" echo -e " ${YELLOW}→ sudo systemctl start nfs-server${NC}" fi echo "" # === VMs STATUS === echo -e "${BOLD} 🖥️ MACHINES VIRTUELLES${NC}" VMS=$(sudo qm list 2>/dev/null | tail -n +2) if [ -n "$VMS" ]; then echo "$VMS" | while read line; do VMID=$(echo "$line" | awk '{print $1}') NAME=$(echo "$line" | awk '{print $2}') STATUS=$(echo "$line" | awk '{print $3}') if [ "$STATUS" = "running" ]; then echo -e " ${GREEN}✅${NC} $VMID $NAME" else echo -e " ${DIM}⏹️ $VMID $NAME ($STATUS)${NC}" fi done else echo -e " ${DIM}Aucune VM${NC}" fi echo "" # === COMMANDES UTILES === echo -e "${BOLD} 🔧 COMMANDES${NC}" echo -e " ${GREEN}sudo qm list${NC} Liste des VMs" echo -e " ${GREEN}sudo qm start <vmid>${NC} Démarrer une VM" echo -e " ${GREEN}sudo qm stop <vmid>${NC} Arrêter une VM" echo -e " ${GREEN}sudo zpool status${NC} Status ZFS détaillé" echo -e " ${GREEN}sudo zpool scrub stock_36to${NC} Vérifier intégrité" echo -e " ${GREEN}sudo exportfs -v${NC} Voir exports NFS" echo -e " ${GREEN}recovery-start${NC} Relancer les VMs (après incident)" echo "" echo -e "${CYAN}╚══════════════════════════════════════════════════════════════════╝${NC}" echo "" echo -e "${DIM}IP: 192.168.1.10 | Proxmox: https://pve.local:8006${NC}" echo "" # Check mises à jour UPDATES=$(apt list --upgradable 2>/dev/null | grep -c upgradable) if [ "$UPDATES" -gt 0 ]; then echo -e "${YELLOW} ⚠️ MISES À JOUR: $UPDATES paquet(s)${NC}" echo -e "${DIM} sudo apt update && sudo apt upgrade -y${NC}" echo "" else echo -e "${GREEN} ✅ Système à jour${NC}" echo "" fi