Create diag.sh
This commit is contained in:
parent
3e42dd57cd
commit
73b1655301
|
|
@ -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+=("<tr style='background-color: $COLOR_GREEN;'><td>$proc</td><td>Actif</td></tr>")
|
||||
else
|
||||
process_status+=("<tr style='background-color: $COLOR_RED;'><td>$proc</td><td>Inactif</td></tr>")
|
||||
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+=("<tr style='background-color: $COLOR_GREEN;'><td>Authentification Kerberos</td><td>Actif et Valide</td></tr>")
|
||||
else
|
||||
kerberos_checks+=("<tr style='background-color: $COLOR_RED;'><td>Authentification Kerberos</td><td>Problème détecté</td></tr>")
|
||||
kerberos_checks+=("<tr><td colspan='2'>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.</td></tr>")
|
||||
fi
|
||||
else
|
||||
kerberos_checks+=("<tr style='background-color: $COLOR_RED;'><td>Authentification Kerberos</td><td>Problème détecté</td></tr>")
|
||||
kerberos_checks+=("<tr><td colspan='2'>Aucun processus KDC n'a été trouvé. Le service Kerberos semble être inactif ou mal configuré.</td></tr>")
|
||||
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+=("<tr style='background-color: $COLOR_GREEN;'><td>Annuaire LDAP</td><td>Configuré et Accessible</td></tr>")
|
||||
else
|
||||
ldap_checks+=("<tr style='background-color: $COLOR_RED;'><td>Annuaire LDAP</td><td>Problème de configuration</td></tr>")
|
||||
ldap_checks+=("<tr><td colspan='2'>Impossible de récupérer les informations du domaine. Vérifiez la configuration Samba AD.</td></tr>")
|
||||
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+=("<tr style='background-color: $COLOR_GREEN;'><td>Serveur DNS</td><td>Actif et Fonctionnel</td></tr>")
|
||||
else
|
||||
dns_checks+=("<tr style='background-color: $COLOR_RED;'><td>Serveur DNS</td><td>Problème détecté</td></tr>")
|
||||
dns_checks+=("<tr><td colspan='2'>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.</td></tr>")
|
||||
fi
|
||||
|
||||
echo "${dns_checks[@]}"
|
||||
}
|
||||
|
||||
# Génération du rapport HTML
|
||||
generate_html_report() {
|
||||
cat << EOF > "$REPORT_FILE"
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Rapport Monitoring Samba AD DC</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; }
|
||||
table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
h2 { color: #333; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Rapport de Monitoring Samba AD DC - $(date '+%d/%m/%Y %H:%M:%S')</h1>
|
||||
|
||||
<h2>Processus Samba AD</h2>
|
||||
<table>
|
||||
$(check_samba_processes)
|
||||
</table>
|
||||
|
||||
<h2>Authentification Kerberos</h2>
|
||||
<table>
|
||||
$(check_kerberos)
|
||||
</table>
|
||||
|
||||
<h2>Serveur LDAP</h2>
|
||||
<table>
|
||||
$(check_ldap)
|
||||
</table>
|
||||
|
||||
<h2>Serveur DNS</h2>
|
||||
<table>
|
||||
$(check_dns)
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
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
|
||||
Loading…
Reference in New Issue