scan_port_machine.sh
· 2.3 KiB · Bash
Ham
#!/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
| 1 | #!/bin/bash |
| 2 | |
| 3 | # Couleurs pour les messages en console |
| 4 | RED='\033[0;31m' |
| 5 | GREEN='\033[0;32m' |
| 6 | YELLOW='\033[0;33m' |
| 7 | NC='\033[0m' # Pas de couleur |
| 8 | |
| 9 | # Vérifie si l'outil nmap est installé |
| 10 | if ! command -v nmap &> /dev/null; then |
| 11 | echo -e "${RED}❌ nmap n'est pas installé. Installez-le d'abord.${NC}" |
| 12 | exit 1 |
| 13 | fi |
| 14 | |
| 15 | # Création d'un fichier Markdown avec la date courante |
| 16 | output_file="/home/tools/rapport_scan_ports_$(date +%Y-%m-%d).md" |
| 17 | temp_file="/tmp/nmap_scan_result.txt" |
| 18 | |
| 19 | # Début du script avec message et emoji |
| 20 | echo -e "${YELLOW}🔍 Démarrage du scan complet des ports...${NC}" |
| 21 | |
| 22 | # Ajout du titre et des en-têtes de tableau dans le fichier Markdown |
| 23 | echo "# Rapport de Scan Complet des Ports - $(date +%Y-%m-%d)" > "$output_file" |
| 24 | echo "" >> "$output_file" |
| 25 | echo "| Port | Service | Statut |" >> "$output_file" |
| 26 | echo "|------|---------|--------|" >> "$output_file" |
| 27 | |
| 28 | # Affiche une barre de progression simulée |
| 29 | function progress_bar { |
| 30 | for i in {1..10}; do |
| 31 | echo -ne "${YELLOW}⏳ Progression : $((i * 10))% \r${NC}" |
| 32 | sleep 0.3 |
| 33 | done |
| 34 | echo -ne '\n' |
| 35 | } |
| 36 | |
| 37 | progress_bar |
| 38 | |
| 39 | # Exécution du scan de tous les ports avec Nmap sans détection de version, enregistrement dans un fichier temporaire |
| 40 | nmap -sS -p- localhost > "$temp_file" |
| 41 | |
| 42 | # Vérification si le fichier temporaire a bien été créé et contient des données |
| 43 | if [[ ! -s "$temp_file" ]]; then |
| 44 | echo -e "${RED}❌ Erreur : Aucun résultat trouvé. Le scan nmap n'a pas produit de sortie.${NC}" |
| 45 | exit 1 |
| 46 | fi |
| 47 | |
| 48 | # Lecture et analyse du fichier temporaire ligne par ligne |
| 49 | while read -r line; do |
| 50 | echo -e "${YELLOW}🔹 Ligne lue : $line${NC}" # Message de débogage |
| 51 | |
| 52 | # Filtre des lignes correspondant aux ports ouverts et extraction des informations |
| 53 | if [[ $line =~ ^[0-9]+/tcp ]]; then |
| 54 | port=$(echo "$line" | awk '{print $1}') |
| 55 | status=$(echo "$line" | awk '{print $2}') |
| 56 | service=$(echo "$line" | awk '{print $3}') |
| 57 | |
| 58 | # Ajout des informations au fichier Markdown |
| 59 | echo "| $port | $service | $status |" >> "$output_file" |
| 60 | fi |
| 61 | done < "$temp_file" |
| 62 | |
| 63 | # Suppression du fichier temporaire |
| 64 | rm "$temp_file" |
| 65 | |
| 66 | # Confirmation de la création du fichier |
| 67 | if [[ -f "$output_file" ]]; then |
| 68 | echo -e "${GREEN}✅ Scan terminé. Rapport sauvegardé dans :${NC} $output_file" |
| 69 | else |
| 70 | echo -e "${RED}❌ Erreur : Impossible de créer le rapport.$NC" |
| 71 | fi |
| 72 |