LINUX.ORG.RU

[regexp] Получить список IP и MAC

 


0

2

есть вывод комманды arp

%arp -a
? (192.168.2.254) at 00:21:91:20:01:0a on rl0 [ethernet]
? (192.168.2.125) at 62:12:1e:00:57:23 on rl0 [ethernet]
xx.local (192.168.2.22) at 00:02:2a:e1:6f:de on rl0 permanent [ethernet]

Вот таким образом я получаю IP

%arp -a | grep -E -o '((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])'
192.168.2.254
192.168.2.125
192.168.2.22
А таким - MAC
%arp -a | grep -E -o '[0-9,aAbBcCdDeEfF]{1,2}(\:[0-9,aAbBcCdDeEfF;]{1,3}){5}'
00:21:91:20:01:0a
62:12:1e:00:57:23
00:02:2a:e1:6f:de

А каким образом можно получить список соответствий вроде

192.168.2.254 00:21:91:20:01:0a
192.168.2.125 62:12:1e:00:57:23
192.168.2.22 00:02:2a:e1:6f:de
???

Или каким образом можно составить map в Python2, где ключ - IP, а значение - MAC?

Ответ на: комментарий от Komintern

Благодарю! Но я уже нашёл решение:

arp -an | cut -d" " -f2,4 | tr -d '(' | tr -d ')'

Chaser_Andrey ★★★★★
() автор топика

awk 'BEGIN{getline}{print $1, $4}' /proc/net/arp

n01r ★★
()

arp -a | perl -nE 'say /\((.+?)\)\s+at(\s+\S+)/'

Olegymous ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.