#!/bin/bash # Couleurs pour les messages en console RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' NC='\033[0m' # Pas de couleur # Vérifie si l'outil nmap est installé if ! command -v nmap &> /dev/null; then echo -e "${RED}❌ nmap n'est pas installé. Installez-le d'abord.${NC}" exit 1 fi # Création d'un fichier Markdown avec la date courante output_file="/home/tools/rapport_scan_ports_$(date +%Y-%m-%d).md" temp_file="/tmp/nmap_scan_result.txt" # Début du script avec message et emoji echo -e "${YELLOW}🔍 Démarrage du scan complet des ports...${NC}" # Ajout du titre et des en-têtes de tableau dans le fichier Markdown echo "# Rapport de Scan Complet des Ports - $(date +%Y-%m-%d)" > "$output_file" echo "" >> "$output_file" echo "| Port | Service | Statut |" >> "$output_file" echo "|------|---------|--------|" >> "$output_file" # Affiche une barre de progression simulée function progress_bar { for i in {1..10}; do echo -ne "${YELLOW}⏳ Progression : $((i * 10))% \r${NC}" sleep 0.3 done echo -ne '\n' } progress_bar # Exécution du scan de tous les ports avec Nmap sans détection de version, enregistrement dans un fichier temporaire nmap -sS -p- localhost > "$temp_file" # Vérification si le fichier temporaire a bien été créé et contient des données if [[ ! -s "$temp_file" ]]; then echo -e "${RED}❌ Erreur : Aucun résultat trouvé. Le scan nmap n'a pas produit de sortie.${NC}" exit 1 fi # Lecture et analyse du fichier temporaire ligne par ligne while read -r line; do echo -e "${YELLOW}🔹 Ligne lue : $line${NC}" # Message de débogage # Filtre des lignes correspondant aux ports ouverts et extraction des informations if [[ $line =~ ^[0-9]+/tcp ]]; then port=$(echo "$line" | awk '{print $1}') status=$(echo "$line" | awk '{print $2}') service=$(echo "$line" | awk '{print $3}') # Ajout des informations au fichier Markdown echo "| $port | $service | $status |" >> "$output_file" fi done < "$temp_file" # Suppression du fichier temporaire rm "$temp_file" # Confirmation de la création du fichier if [[ -f "$output_file" ]]; then echo -e "${GREEN}✅ Scan terminé. Rapport sauvegardé dans :${NC} $output_file" else echo -e "${RED}❌ Erreur : Impossible de créer le rapport.$NC" fi