diff --git a/diag.sh b/diag.sh new file mode 100644 index 0000000..7f8afa7 --- /dev/null +++ b/diag.sh @@ -0,0 +1,210 @@ +#!/bin/bash + +# Script de monitoring pour Serveur Samba Active Directory + +# Configuration +LOG_FILE="/var/log/samba-ad-monitor.log" +REPORT_FILE="/tmp/samba_ad_report_$(date +%Y%m%d_%H%M%S).html" +ADMIN_EMAIL="serviceinfo@h3campus.fr" +DOMAIN_NAME=$(hostname -d) +REALM=$(samba-tool domain info $(hostname -f) | grep "Realm" | cut -d: -f2 | tr -d '[:space:]') +ADMIN_USER="Administrator" + +# Couleurs pour le rapport HTML +COLOR_GREEN="#e6ffe6" +COLOR_RED="#ffe6e6" +COLOR_YELLOW="#fffae6" + +# Fonction de logging +log_message() { + echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" +} + +# Vérification des outils LDAP +check_ldap_tools() { + local ldap_packages=("ldap-utils" "slapd") + local missing_packages=() + + for pkg in "${ldap_packages[@]}"; do + if ! dpkg -s "$pkg" &> /dev/null; then + missing_packages+=("$pkg") + fi + done + + if [ ${#missing_packages[@]} -gt 0 ]; then + log_message "Installation des paquets LDAP manquants : ${missing_packages[*]}" + apt-get update + apt-get install -y "${missing_packages[@]}" + fi +} + +# Vérification des processus Samba +check_samba_processes() { + local processes_to_check=( + "samba" + "winbind_server" + "ldap_server" + "dns" + "kdc_server" + "dreplsrv" + "rpc_server" + "cldap_server" + "nbt_server" + ) + local process_status=() + + log_message "Début de la vérification des processus Samba" + + local samba_processes=$(samba-tool processes | tail -n +3 | awk '{print $1}' | sort | uniq) + + for proc in "${processes_to_check[@]}"; do + if echo "$samba_processes" | grep -q "$proc"; then + process_status+=("$procActif") + else + process_status+=("$procInactif") + fi + done + + echo "${process_status[@]}" +} + +# Vérification détaillée Kerberos +check_kerberos() { + local kerberos_checks=() + local password + + # Demander interactivement le mot de passe + read -s -p "Mot de passe pour $ADMIN_USER : " password + echo + + local kdc_processes=$(samba-tool processes | grep "kdc_server") + + if [ -n "$kdc_processes" ]; then + if echo "$password" | kinit "$ADMIN_USER" &> /dev/null; then + kerberos_checks+=("Authentification KerberosActif et Valide") + else + kerberos_checks+=("Authentification KerberosProblème détecté") + kerberos_checks+=("Le script a vérifié la présence des processus KDC et a tenté d'obtenir un ticket Kerberos avec le compte utilisateur '$ADMIN_USER'. Un problème a été détecté, probablement lié à la configuration ou au fonctionnement du service Kerberos.") + fi + else + kerberos_checks+=("Authentification KerberosProblème détecté") + kerberos_checks+=("Aucun processus KDC n'a été trouvé. Le service Kerberos semble être inactif ou mal configuré.") + fi + + echo "${kerberos_checks[@]}" +} + +# Vérification LDAP +check_ldap() { + local ldap_checks=() + + # Vérifier la configuration LDAP via samba-tool + if samba-tool domain info $(hostname -f) &> /dev/null; then + ldap_checks+=("Annuaire LDAPConfiguré et Accessible") + else + ldap_checks+=("Annuaire LDAPProblème de configuration") + ldap_checks+=("Impossible de récupérer les informations du domaine. Vérifiez la configuration Samba AD.") + fi + + echo "${ldap_checks[@]}" +} + + +# Vérification DNS +check_dns() { + local dns_checks=() + + local dns_processes=$(samba-tool processes | grep "dns") + + if [ -n "$dns_processes" ] && host "$DOMAIN_NAME" &> /dev/null; then + dns_checks+=("Serveur DNSActif et Fonctionnel") + else + dns_checks+=("Serveur DNSProblème détecté") + dns_checks+=("Le script a vérifié la présence des processus DNS et a tenté de résoudre le nom de domaine. Un problème a été détecté, probablement lié à la configuration ou au fonctionnement du service DNS.") + fi + + echo "${dns_checks[@]}" +} + +# Génération du rapport HTML +generate_html_report() { + cat << EOF > "$REPORT_FILE" + + + + Rapport Monitoring Samba AD DC + + + +

Rapport de Monitoring Samba AD DC - $(date '+%d/%m/%Y %H:%M:%S')

+ +

Processus Samba AD

+ + $(check_samba_processes) +
+ +

Authentification Kerberos

+ + $(check_kerberos) +
+ +

Serveur LDAP

+ + $(check_ldap) +
+ +

Serveur DNS

+ + $(check_dns) +
+ + +EOF +} + +# Envoi du rapport par email +send_email_report() { + if [ -f "$REPORT_FILE" ]; then + if command -v sendmail &> /dev/null; then + ( + echo "To: $ADMIN_EMAIL" + echo "Subject: Rapport Monitoring Samba AD DC - $(date '+%d/%m/%Y')" + echo "Content-Type: text/html" + echo "" + cat "$REPORT_FILE" + ) | sendmail -t + log_message "Rapport envoyé via sendmail à $ADMIN_EMAIL" + elif command -v ssmtp &> /dev/null; then + ( + echo "To: $ADMIN_EMAIL" + echo "Subject: Rapport Monitoring Samba AD DC - $(date '+%d/%m/%Y')" + echo "Content-Type: text/html" + echo "" + cat "$REPORT_FILE" + ) | ssmtp "$ADMIN_EMAIL" + log_message "Rapport envoyé via ssmtp à $ADMIN_EMAIL" + else + cp "$REPORT_FILE" "/var/www/html/samba-ad-report-latest.html" + log_message "ATTENTION : Impossible d'envoyer l'email. Rapport sauvegardé dans /var/www/html/samba-ad-report-latest.html" + fi + else + log_message "Erreur: Fichier de rapport introuvable" + fi +} + +# Fonction principale +main() { + check_ldap_tools + log_message "Début du monitoring Samba AD DC" + generate_html_report + send_email_report + log_message "Monitoring terminé" +} + +# Exécution du script +main