Сценарий Bash для получения по запросу всего интерфейсного MAC-адреса

Я надеюсь создавать сценарий удара, который я могу использовать с живой Ubuntu 16. Я работаю в заводе с несколькими, другой тип изготовителей плат и много наших клиентов запрашивают MAC-адреса их системы, прежде чем это пошлет. Это могло быть где угодно от 1 до 10 Сетевых интерфейсов, и сумма систем где угодно от 1 к сотням.

Как был бы iIcreate сценарий для выставления этой информации в порядке сетевых интерфейсов, таких как:

LAN1 MAC | LAN2 MAC | LAN3 MAC | и т.д. и т.д.

До сих пор я записал простой сценарий, который перечислит все MAC-адреса для всех интерфейсов, но как я могу поместить их в порядок, который я хочу и удостоверяюсь, что сценарий знает для запуска в LAN1, затем перемещаются в LAN2...?

#!/bin/bash

MAC1=$(ip a |awk '/ether/ {print $2}')

echo "$MAC"

#end

Спасибо за помощь!

2
задан 15 December 2016 в 18:03

2 ответа

Как упоминалось в xhienne, достаточно использовать ip link с несколькими методами фильтрации. Лично я использую awk.

$ ip -o link  | awk '{print $2,$(NF-2)}'                                                                                 
lo: 00:00:00:00:00:00
eth3: f0:76:1c:8c:6d:f7
wlan7: d0:53:49:3d:53:fd
docker0: 02:42:bc:cd:0b:4d

При желании это можно сделать и на любом другом языке, например python:

$ cat get_iface_mac.py                                                                                                   
#!/usr/bin/env python
from __future__ import print_function
import netifaces as ni
for iface in ni.interfaces():
     print(iface + " " + ni.ifaddresses(iface)[ni.AF_LINK][0]['addr'])

$ ./get_iface_mac.py                                                                                                     
lo 00:00:00:00:00:00
eth3 f0:76:1c:8c:6d:f7
wlan7 d0:53:49:3d:53:fd
docker0 02:42:bc:cd:0b:4d
.
3
ответ дан 2 December 2019 в 02:16

Предполагая, что lan1..., lanN являются названиями сетевого интерфейса как eth0, это должно решить Вашу проблему:

ip link \
| sed -z 's,\n\s*link/\S*,:,g;' \
| cut -d : -f 2,4- \
| cut -d" " -f2,3 \
| sort

ip link списки команд сетевые интерфейсы; (GNU) sed в основном строки соединений; два cut извлечение, что необходимо; и финал sort делает Ваш алфавитный вид на именах интерфейса.

1
ответ дан 2 December 2019 в 02:16

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

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