#!/usr/bin/env php $tempLog"); // Lire le fichier temporaire et extraire les adresses IP $logContent = file_get_contents($tempLog); preg_match_all('/\[\K[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+(?=\])/', $logContent, $matches); // Supprimer les doublons $ips = array_unique($matches[0]); // Obtenir la liste des IP déjà bannies exec("sudo fail2ban-client status postfix-sasl", $output); $bannedIps = []; $bannedIpsFound = false; foreach ($output as $line) { if (strpos($line, 'Banned IP list:') !== false) { $bannedIpsFound = true; $bannedIps = array_merge($bannedIps, preg_split('/\s+/', trim($line))); } elseif ($bannedIpsFound && trim($line) !== '') { $bannedIps = array_merge($bannedIps, preg_split('/\s+/', trim($line))); } } // Écrire les adresses IP dans un fichier temporaire file_put_contents($banList, implode("\n", $ips)); // Lire le fichier contenant les adresses IP et les bannir avec fail2ban-client foreach ($ips as $ip) { if (!in_array($ip, $bannedIps)) { echo "Banning IP: $ip\n"; exec("sudo fail2ban-client set postfix-sasl banip $ip"); } } // Nettoyer les fichiers temporaires unlink($tempLog); unlink($banList); echo "All matching IPs have been processed.\n"; echo "-- Fin d'exection de ".__FILE__."\n"; ?>