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+=("
| $proc | Actif |
")
+ else
+ process_status+=("| $proc | Inactif |
")
+ 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 Kerberos | Actif et Valide |
")
+ else
+ kerberos_checks+=("| Authentification Kerberos | Problè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 Kerberos | Problè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 LDAP | Configuré et Accessible |
")
+ else
+ ldap_checks+=("| Annuaire LDAP | Problè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 DNS | Actif et Fonctionnel |
")
+ else
+ dns_checks+=("| Serveur DNS | Problè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
+
+
+ Serveur LDAP
+
+
+ Serveur 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