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 -b
saída sempre esteve correta. Quando meu telefone está conectado à rede, vejo o endereço IP que quase sempre aparece na lista (do ping
comando). 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.