Se desideri uno script Bash che rilevi gli host sulla tua rete locale senza utilizzare nmap, possiamo utilizzare altri strumenti come ping per il rilevamento degli host. Tuttavia, senza nmap, sarà più difficile e meno affidabile rilevare le porte aperte su ciascun host.
La soluzione potrebbe essere la seguente:
#!/bin/bash
# Definisci la subnet base e il range di indirizzi IP da controllare
subnet="192.168.1"
start=1
end=254
echo "Scanning for active hosts in the subnet $subnet.0/24..."
# Funzione per testare la connettività con ping
ping_host() {
if ping -c 1 -W 1 $1 &> /dev/null; then
echo "$1 is up"
fi
}
# Esegue il ping a tutti gli indirizzi IP nel range definito
for i in $(seq $start $end); do
ip="$subnet.$i"
# Esegui ping in background per velocizzare il processo
ping_host $ip &
done
# Aspetta che tutti i processi in background terminino
wait
echo "Scan complete."
In dettaglio:
- Definizione della subnet e del range di IP: Modifica la variabile
subnet
per riflettere i primi tre ottetti della tua rete locale e adattastart
eend
per coprire il range di IP che vuoi scansionare. - Funzione di ping: La funzione
ping_host
usaping
per verificare la disponibilità di un host. Se l'host risponde al ping, viene stampato un messaggio. - Esecuzione parallela: Per ogni IP nel range definito, il ping viene eseguito in background per velocizzare la scansione.
- Sincronizzazione:
wait
è usato per assicurarsi che tutti i processi in background terminino prima di dichiarare completata la scansione.
Questo metodo è meno invasivo e non richiede strumenti aggiuntivi, ma è anche meno dettagliato e potrebbe non rilevare gli host configurati per ignorare i pacchetti ICMP (ping). Inoltre, non effettua la scansione delle porte, poiché farlo senza nmap
richiederebbe un approccio molto più complesso e meno affidabile.