Esto es una especie de seguimiento deestepublicación mía.
Tengo la dirección mac de mi teléfono (samsung galaxy S9; aunque no debería importar). Quiero comprobar si está en la red o no. No tiene una IP estática, por lo que necesito verificarla usando su dirección MAC.
Me referiré a la dirección mac de mi teléfono con [1]
.
- En mi teléfono, la dirección MAC aleatoria para la red está desactivada (este no fue el caso en la publicación anterior). Solía generar una dirección Mac aleatoria cada vez que se conectaba a mi red, ahora ya no.
- Esto es lo que hago para comprobar si la dirección mac está en la red:
ping -b 192.168.2.255 -c 20 arp | grep -i "[1]"
Este es el "log" de los eventos:
#phone connected to network
ping -b 192.168.2.255 -c 20 &> /dev/null
arp | grep -i "[1]"
-> successful
#phone NOT connected to network (turned of wifi on phone)
ping -b 192.168.2.255 -c 20 &> /dev/null
arp | grep -i "[1]"
-> successful
La segunda vez, no debería tener éxito. El teléfono no está conectado a la red, pero aún así lo muestra en la salida arp.
Mi teléfono no tiene una dirección IP estática, pero cuando lo conecta a la red, casi siempre obtiene la misma dirección IP. Está bien. La ping -b
salida siempre ha sido correcta. Cuando mi teléfono está conectado a la red, veo la dirección IP que casi siempre aparece en la lista (del ping
comando). Cuando mi teléfono no está conectado, nunca veo su dirección IP "estándar" en la salida. Entonces el ping funciona y está "actualizado".
Así que supongo que arp no está "actualizado" como lo está ping (pero esta es solo mi suposición). Creo que arp no actualiza su tabla a pesar de que ping ha "creado" una nueva. Pero eso es lo que pienso basándome en un comentario del post anterior: "Ya estás haciendo un ping de transmisión, ping -b 192.168.2.255. Esto debería rellenar la tabla arp para cualquier dispositivo en línea con la dirección IP 192.168.2..*"
¡Ayuda!
Respuesta1
Si estas usandoARPPara determinar si su teléfono está conectado a la red o no, debe quitar la conexión de su teléfono.ARPentrada desde la computadoraARPmesa. De lo contrario, no podrá determinar el cambio porque la entrada anterior permanece inmóvil.
Puedes eliminar específicosARPentrada con arp -d <IP_ADDR>
el comando y elimine todas las entradas con sudo ip neigh flush all
.
Pero creo que deberías usarnmapapara escanear, además no necesitarás limpiarARPmesa más. Puedes usar este script.
#!/bin/bash
mac="$1"
# Scanning network, and obtaining IP address of specfied MAC address, if exists.
PHONEIP=$(sudo nmap -sP -n 192.168.2.0/24 | grep -B2 "$mac" | grep -Eoi "192\.168\.2\.[0-9]+")
if [[ $PHONEIP == "" ]];then
echo "$MAC not found."
else
echo "$MAC found at $PHONEIP"
fi
Pero debes proporcionar la dirección MAC de tu teléfono como primer argumento, o puedes cambiar la línea mac="$1"
a mac="<your-phone-mac>"
.
Nota: Necesitará privilegios de superusuario para utilizar este script.