Hasta ahora hemos visto la forma de obtener la MAC de una IP, pero claro, la IP tiene que estar en uso para poder conocer su MAC. ¿Cómo podríamos hacer para conocer la MAC de varias IPs que aunque no están en uso actualmente sí lo pueden estar en las próximas horas o días?
Se hará lo siguiente: tendremos una lista de IPs a chequear (de las cuales no conocemos sus direcciones MAC). Cada cierto tiempo (pongamos cada hora) se chequearán todas las IPs y las que respondan a ping (y por tanto obtengamos su MAC) las iremos anotando en otra lista.
La lista de IPs a chequear la tendremos en el fichero ips:
192.168.1.2
192.168.1.5
192.168.1.100
192.168.1.200
192.168.1.240
Realizaremos el script que chequeará cada vez que sea llamado:
#!/bin/sh
IFS="
"
for IP in $(cat ips)
do
MAC=`ping -c 1 $IP >/dev/null 2>&1 && arp -n | grep "$IP " | awk '{print $3}'`
if [ $? -eq "0" ]; then
echo $IP $MAC >> macs
else
echo $IP >> tmp
fi
done
mv tmp ips
Y por último, configuraremos cron para que llame al script cada hora:
$ crontab -e
0 * * * * sh /home/juan/chequear.sh
Indicar que, según muestra el script, en el fichero ips nos irán quedando las IPs que no han respondido a ping y en el fichero macs las IPs junto a sus MAC.
Hola muy útil el programa. ¿Crees que sería fácil usar una base de datos para almacenar los datos que estás buscando en vez de usar ficheros de texto?
ResponderEliminarUn saludo
Hola, sería muy fácil. Al menos si usas Postgresql (es la BD con la que suelo hacer cosillas a menudo), pues el intérprete de comandos que tiene en modo consola (psql) se puede llamar mediante scripts y pasarle las sentencias SQL que quieres que ejecute (insert, delete, ...). Preparo algunos ejemplos para el post de mañana ;)
ResponderEliminarSaludos y gracias por pasarte por aquí.