Ajouter 'check_domain_cert.sh'
This commit is contained in:
parent
29f5bd8866
commit
41ac71fdb1
|
@ -0,0 +1,129 @@
|
|||
#!/bin/bash
|
||||
|
||||
domain="$1"
|
||||
port="${2:-443}" # Utilise 443 par défaut si le 3ème paramètre (port) n'est pas fourni
|
||||
|
||||
# Fonction pour effectuer le test SSL/TLS et obtenir la différence en jours jusqu'à l'expiration
|
||||
get_days_until_expiration() {
|
||||
local domain="$1"
|
||||
local port="$2"
|
||||
|
||||
# Tester la date d'expiration du domaine sur le port spécifié
|
||||
expiration_date=$(echo | openssl s_client -connect "$domain":"$port" -servername "$domain" 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
|
||||
|
||||
# Convertir la date d'expiration en timestamp
|
||||
expiration_timestamp=$(date -d "$expiration_date" +%s)
|
||||
|
||||
# Calculer le nombre de jours restants jusqu'à l'expiration
|
||||
today_timestamp=$(date +%s)
|
||||
local diff=$(( (expiration_timestamp - today_timestamp) / 86400 ))
|
||||
echo $diff
|
||||
}
|
||||
|
||||
|
||||
check_date() {
|
||||
local domain="$1"
|
||||
local port="$2"
|
||||
|
||||
echo "Tester la date d'expiration du domaine $domain sur le port $port"
|
||||
|
||||
# Obtenir la différence en jours jusqu'à l'expiration
|
||||
days_until_expiration=$(get_days_until_expiration "$domain" "$port")
|
||||
|
||||
echo $days_until_expiration
|
||||
|
||||
# Vérifier si $days_until_expiration est supérieur à 126
|
||||
if [ "$days_until_expiration" -gt 126 ]; then
|
||||
exit 127
|
||||
else
|
||||
exit $days_until_expiration
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Fonction pour tester si un MX existe et le tester
|
||||
check_domain_mx() {
|
||||
local domain="$1"
|
||||
local port="$2"
|
||||
|
||||
# Vérifier si le domaine commence par "www" ou s'il n'a pas de sous-domaine (domain.tld)
|
||||
if [[ "$domain" == *.* && ! "$domain" == *.*.* ]]; then
|
||||
|
||||
echo -e "Tester l'existence du champ MX pour le domaine $domain"
|
||||
|
||||
# Récupérer toutes les réponses MX pour le domaine
|
||||
mx_domains=$(dig +short MX "$domain" | awk '{sub(/\.$/, "", $2); print $2}')
|
||||
|
||||
if [ -n "$mx_domains" ]; then
|
||||
# Tester chaque domaine MX trouvé sur le port 993
|
||||
for mx_domain in $mx_domains; do
|
||||
# Vérifier que le port 993 est ouvert
|
||||
if echo -e "QUIT" | timeout 2 nc -z -w2 "$mx_domain" 993; then
|
||||
check_date "$mx_domain" "993" "$email"
|
||||
else
|
||||
echo -e " ⚠️ Le port 993 n'est pas ouvert sur le domaine MX $mx_domain."
|
||||
fi
|
||||
done
|
||||
for mx_domain in $mx_domains; do
|
||||
# Vérifier que le port 465 est ouvert et tester la connexion SSL
|
||||
if echo -e "QUIT" | timeout 2 nc -z -w2 "$mx_domain" 465; then
|
||||
check_date "$mx_domain" "465" "$email"
|
||||
else
|
||||
echo -e " ⚠️ Le port 465 (SMTPS) n'est pas ouvert sur le domaine MX $mx_domain."
|
||||
fi
|
||||
done
|
||||
else
|
||||
if [ -n "$email" ]; then
|
||||
echo " ⚠️ Le domaine $domain n'a pas d'enregistrement MX valide." | mail -s " ⚠️ [ALERTE] MX absent pour $domain:$port" "$email"
|
||||
fi
|
||||
echo -e " ⚠️ Le domaine $domain n'a pas d'enregistrement MX valide."
|
||||
fi
|
||||
else
|
||||
|
||||
echo -e "Tester l'existence du champ MX pour le domaine ${domain#*.}"
|
||||
|
||||
# Récupérer toutes les réponses MX pour le domaine
|
||||
mx_domains=$(dig +short MX "${domain#*.}" | awk '{sub(/\.$/, "", $2); print $2}')
|
||||
|
||||
if [ -n "$mx_domains" ]; then
|
||||
# Tester chaque domaine MX trouvé sur le port 993
|
||||
for mx_domain in $mx_domains; do
|
||||
# Vérifier que le port 993 est ouvert
|
||||
if echo -e "QUIT" | timeout 2 nc -z -w2 "$mx_domain" 993; then
|
||||
check_date "$mx_domain" "993" "$email"
|
||||
else
|
||||
echo -e " ⚠️ Le port 993 n'est pas ouvert sur le domaine MX $mx_domain."
|
||||
fi
|
||||
done
|
||||
for mx_domain in $mx_domains; do
|
||||
# Vérifier que le port 465 est ouvert et tester la connexion SSL
|
||||
if echo -e "QUIT" | timeout 2 nc -z -w2 "$mx_domain" 465; then
|
||||
check_date "$mx_domain" "465" "$email"
|
||||
else
|
||||
echo -e " ⚠️ Le port 465 (SMTPS) n'est pas ouvert sur le domaine MX $mx_domain."
|
||||
fi
|
||||
done
|
||||
else
|
||||
if [ -n "$email" ]; then
|
||||
echo " ⚠️ Le domaine $domain n'a pas d'enregistrement MX valide." | mail -s " ⚠️ [ALERTE] MX absent pour $domain:$port" "$email"
|
||||
fi
|
||||
echo -e " ⚠️ Le domaine $domain n'a pas d'enregistrement MX valide."
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Vérifier si le nom de domaine est accessible en utilisant "curl"
|
||||
if curl --output /dev/null --silent --head --fail "$domain"; then
|
||||
# Appel initial pour le domaine spécifié
|
||||
check_date "$domain" "$port"
|
||||
# Vérifier le domaine MX s'il existe
|
||||
#check_domain_mx "$domain" "$port"
|
||||
else
|
||||
echo " ⚠️ Le domaine $domain n'est pas accessible."
|
||||
exit -1
|
||||
fi
|
Loading…
Reference in New Issue