← 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