Краткое напоминание об задействованных уровнях :LAN и WLAN взаимодействуют с использованием MAC-адресов (Уровень 2 OSI ). Протокол ARP сообщает вам, какой MAC-адрес принадлежит какому IP-адресу (уровень OSI 3 ). Имена машин обрабатываются DNS. Как правило, на вашем домашнем маршрутизаторе работает DNS-сервер, где вы либо можете указать, какое имя принадлежит какому MAC-адресу, либо он автоматически использует имена, если они предоставляются DHCP.
Так:
Получите MAC-адреса подключенных станций, используя iw wlan0 station dump
, где wlan0
— это ПЧ вашей точки доступа. Это более надежно, чем кеш arp, потому что кеш arp может не включать все подключенные машины, а также может включать другие машины в других локальных сетях и т. д. arp-scan
также менее надежен., потому что он попытается получить ответы ARP через WLAN, но точка доступа уже точно знает , какие машины подключены.
Для каждого из этих MAC-адресов найдите соответствующий IP-адрес. Единственный инструмент командной строки, который я могу придумать для этого, это arping
, но, вероятно, есть лучший способ.
Для каждого из IP-адресов выполните обратный поиск DNS для вашего домашнего маршрутизатора, например. host <ip-addr>
.
Да, это так сложно, и если вы хотите сделать это правильно, вы не сможете срезать путь. Может быть какой-то инструмент, который сделает это за вас, но я не знаю ни одного, так что вам придется его написать.
Я получил это:
awk '$4=="value=" {$5=($5*25)}1' foo
Для выполнения математических операций необходимо использовать awk
или выше (sed, а grep не может выполнять математические операции ).
Заменить grep в awk довольно просто, достаточно использовать регулярное выражение/update/
:
awk '/update/ { if ($4=="value=") { $5*=25 }; print }'./file