Comprobar si la dirección mac está presente en la red todavía no funciona (ping -b y arp)

Comprobar si la dirección mac está presente en la red todavía no funciona (ping -b y arp)

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 -bsalida 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 pingcomando). 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.

información relacionada