cPanel Linux

Trovare tutti gli IP attivi in una subnet ed effettuare un lookup per trovare il proprio mac address

In ambito sistemistico (più networking) si può avere la necessità di avere una lista di tutti gli indirizzi IP che sono già occupati. In più vogliamo sapere anche il mac-address a cui è legato l’ip.

In genere, tute le macchine hanno il ping-reply attivo: per vedere se è online, basta effettuare un ping all’host della macchina per vedere se è attiva.

Possiamo sfruttare, per questo, un comando poco conosciuto ma molto utile in linux: fping.

Non è presente, in genere, nei repository delle solite distribuzioni ma si può trovare, ad esempio, nel rpmforge per Centos/Redhat oppure mirror alternativi. Se non si sa dove prenderlo, basta scaricare i sorgenti e compilarlo.

Fping, come dice l’help, serve ad eseguire un ping su una determinata subnet che può essere specificata in due modi: con la corretta subnet (10.0.0.0/16) oppure in un intervallo (10.0.0.1 10.0.0.255).

Per ricavare il mac-address, possiamo utilizzare l’utilissimo comando arp che serve, appunto, a ricavare il mac-address a partire da un indirizzo IP (lookup).

Chiaramente, per funzione, la macchina da cui si lancia il comando arp DEVE essere sulla stessa rete della subnet altrimenti il lookup non funziona (se passa per un router, chiaramente, il mac-address non verrà visto).

Allora, per fare una combinazione di questi comandi, ho creato uno script in bash per fare questo lavoro:

#!/bin/bash
# coded by morphey (morphey@morphey.org)

FILE_OUT="/root/out_fpingtoarp.txt"

rm -f $FILE_OUT
function FPingToArp() {
	for IP in `fping -c1 -g $1|cut -d " " -f 1-1`
	do
	STRING="$IP `arp -n $IP|grep -v HWtype|awk {'print $3'} `"
	echo $STRING >> $FILE_OUT
	done
}

#### MODIFICARE QUI ###########

FPingToArp 10.0.2.1/24

###############################

echo;echo;echo "done."

Come si vede, all’interno del codice è possibile lanciare il comando interno FPingToArp quante volte si vuole. Il resto del codice è abbastanza chiaro 🙂
Da modificare anche il FILE_OUT per avere il responso in qualsiasi file che si vuole.

P.S. nel caso si vuole copiare ed incollare il codice sopra, ricordatevi che wordpress mette delle virgolette che bisogna eliminare 🙂

Christian Cantinelli
Unix System Administrator, Network Admin, programmatore, webmaster. Solare, amante della musica, del cinema, dei viaggi. Questo il riassunto della mia persona.
You may also like
Installare il modulo php MSSQL su CentOS/RedHAT con cPanel
SystemRescueCd – In caso di emergenza, un sistema a portata di mano
Serverplan: aggiornato il forum e nuovo blog
5 Comments
  • 13 settembre 2008 at 13:22

    Bon, conoscevo il -sP ma non sapevo che restituiva il mac address 🙂 ho usato una soluzione più complessa ma funzionante 🙂
    Grazie della segnalazione :)=

  • 13 settembre 2008 at 12:49

    Basta dare anche un semplice nmap da shell.

    ES: la mia rete è una 192.168.185.0/24 quindi da shell do

    nmap -sP 192.168.185.0/24

    e vedo tutti gli host attivi.

    Se dato da root da anche il mac address della scheda di re te e l’hostname

  • 12 settembre 2008 at 7:18

    Buono a sapersi 🙂
    Su Centos, per es., non è presente. Si può installare dai repository DAG oppure dai sorgenti.

  • Michele Renda
    11 settembre 2008 at 22:23

    Confermo che e’ presente nei repository di UBUNTU.

    Ciao

  • 11 settembre 2008 at 10:32

    Trovare tutti gli IP attivi in una subnet ed effettuare un lookup per trovare il proprio mac address | blog.morphey.org/blog…

    Trovare tutti gli IP attivi in una subnet ed effettuare un lookup per trovare il proprio mac address…

Rispondi