Проверка наличия 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-адрес на выходе. Так что пинг работает и "актуален".

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

Помогите!

0
задан 16 July 2021 в 17:36

1 ответ

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

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

Но я думаю, вам следует использовать nmap для сканирования, к тому же вам больше не нужно будет очищать таблицу ARP . Вы можете использовать этот скрипт.

#!/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 = "" .

Примечание. Для использования этого сценария вам потребуются права суперпользователя.

0
ответ дан 28 July 2021 в 11:17

Другие вопросы по тегам:

Похожие вопросы: