Verificar se o endereço mac está presente na rede ainda não funciona (ping -b e arp)

Verificar se o endereço mac está presente na rede ainda não funciona (ping -b e arp)

Isso é uma espécie de acompanhamentoessepostagem minha.

Eu tenho o endereço MAC do meu telefone (Samsung Galaxy S9; embora isso não deva importar). Quero verificar se está na rede ou não. Ele não tem um ip estático, então preciso verificá-lo usando seu endereço mac.

Vou me referir ao endereço MAC do meu telefone com [1].

  • No meu telefone, o endereço MAC aleatório da rede está desativado (esse não foi o caso na postagem anterior). Costumava gerar um endereço MAC aleatório toda vez que se conectava à minha rede, agora não.
  • Isto é o que faço para verificar se o endereço MAC está na rede:
    ping -b 192.168.2.255 -c 20
    arp | grep -i "[1]"
    

Este é o "log" dos 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

Na segunda vez, não deveria ter sucesso. O telefone não está conectado à rede, mas ainda mostra isso na saída arp.

Meu telefone não possui um endereço IP estático, mas ao conectá-lo à rede, quase sempre obtém o mesmo endereço IP. Isso é bom. A ping -bsaída sempre esteve correta. Quando meu telefone está conectado à rede, vejo o endereço IP que quase sempre aparece na lista (do pingcomando). Quando meu telefone não está conectado, nunca vejo o endereço IP "padrão" na saída. Então o ping funciona e está "atualizado".

Portanto, presumo que o arp não esteja "atualizado" como o ping (mas esse é apenas meu palpite). Eu acho que o arp não atualiza sua tabela, embora o ping tenha "feito" uma nova. Mas é o que penso com base em um comentário do post anterior: “Você já está fazendo um ping de transmissão, ping -b 192.168.2.255. Isso deve reabastecer a tabela arp para qualquer dispositivo online com endereço IP 192.168.2..*"

Ajuda!

Responder1

Se você estiver usandoARPtabela para determinar se o seu telefone está conectado à rede ou não, você deve remover oARPentrada do seu computadorARPmesa. Caso contrário, você não poderá determinar a alteração, porque a entrada anterior permanece imóvel.

Você pode remover específicosARPentrada com arp -d <IP_ADDR>comando e remova todas as entradas com sudo ip neigh flush all.

Mas, acho que você deveria usarnmappara digitalização, além de você não precisar limparARPmesa mais. Você pode 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

Mas você deve fornecer o endereço MAC do seu telefone como primeiro argumento ou pode alterar a linha mac="$1"para mac="<your-phone-mac>".

Nota: Você precisará de privilégios de superusuário para usar este script.

informação relacionada