Проверка наличия mac-адреса в сети по-прежнему не работает (ping -b и arp)

Проверка наличия mac-адреса в сети по-прежнему не работает (ping -b и arp)

Это своего рода продолжениеэтотмой пост.

У меня есть mac-адрес моего телефона (Samsung Galaxy S9; хотя это не должно иметь значения). Я хочу проверить, подключен ли он к сети или нет. У него нет статического IP, поэтому мне нужно проверить его, используя mac-адрес.

Я буду ссылаться на mac-адрес моего телефона с помощью [1].

  • На моем телефоне отключен случайный mac-адрес для сети (в предыдущем посте этого не было). Раньше он генерировал случайный mac-адрес каждый раз, когда подключался к моей сети, теперь этого не происходит.
  • Вот что я делаю, чтобы проверить, есть ли mac-адрес в сети:
    ping -b 192.168.2.255 -c 20
    arp | grep -i "[1]"
    

Вот «журнал» событий:

#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

Во второй раз это не должно быть успешным. Телефон не подключен к сети, но он все еще показывает это в выводе arp.

У моего телефона нет статического IP-адреса, но при подключении к сети он почти всегда получает один и тот же IP-адрес. Это нормально. Вывод ping -bвсегда был правильным. Когда мой телефон подключен к сети, я вижу IP-адрес, который он почти всегда получает в списке (команды ping). Когда мой телефон не подключен, я никогда не вижу его "стандартный" IP-адрес в выводе. Так что ping работает и "актуален".

Поэтому я предполагаю, что arp не "актуален", как ping (но это только мое грубое предположение). Я думаю, что arp не обновляет свою таблицу, даже несмотря на то, что ping "создал" новую. Но это то, что я думаю, основываясь на комментарии к предыдущему посту: "Вы уже делаете широковещательный пинг, ping -b 192.168.2.255. Это должно перезаполнить таблицу arp для всех онлайн-устройств с IP-адресом 192.168.2..*"

Помощь!

решение1

Если вы используетеАРПтаблица Чтобы определить, подключен ли ваш телефон к сети или нет, вам нужно удалить ваш телефонАРПзапись с вашего компьютераАРПтаблица. В противном случае вы не сможете определить изменение, так как предыдущая запись останется неподвижной.

Вы можете удалить определенныеАРПзапись с помощью arp -d <IP_ADDR>команды и удалить все записи с помощью sudo ip neigh flush all.

Но я думаю, вам следует использоватьнмапдля сканирования, кроме того, вам не нужно будет чиститьАРПtable больше нет. Вы можете использовать этот скрипт.

#!/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

Но вам придется указать MAC-адрес вашего телефона в качестве первого аргумента или изменить строку mac="$1"на mac="<your-phone-mac>".

Примечание: для использования этого скрипта вам понадобятся права суперпользователя.

Связанный контент