MAC-Adresse automatisch generieren:
> openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/:$//' 2c:0e:06:a1:60:8f
Pingt man den besagten Rechner an, dann kann man anschließend seine MAC-Adresse aus dem ARP-Cache des Kernels auslesen:
# ping -c3 192.168.0.1 # arp -a
Möchte man nicht alle Einträge sehen, dann kann man sich auch nur die relevanten anzeigen lassen:
# ping -c3 192.168.0.1 # arp -a 192.168.0.1
Ubuntu:
ifdown eth0 ifconfig eth0 hw ether 00:xx:xx:xx:xx:xx ifup eht0
hier ist zu sehen, dass aus den beiden NICs "eth0" + "eth1" ein Bond "bond0" erstellt wurde, leider haben alle drei die selbe MAC-Adresse:
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
link/ether d4:ae:52:69:7a:20 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000
link/ether d4:ae:52:69:7a:20 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 90:e2:ba:05:bf:70 brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 90:e2:ba:05:bf:71 brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 90:e2:ba:05:bf:74 brd ff:ff:ff:ff:ff:ff
7: eth5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 90:e2:ba:05:bf:75 brd ff:ff:ff:ff:ff:ff
8: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether d4:ae:52:69:7a:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global bond0
Will man die echten MAC-Adressen von eth0 und eth1 wissen, dann wird man auch mit "dmidecode" schlauer. Auch "lshw" kann uns hier nicht weiterhelfen:
# lshw -class network | egrep 'logical name:|serial:'
logical name: eth0
serial: d4:ae:52:69:7a:20
logical name: eth1
serial: d4:ae:52:69:7a:20
logical name: eth2
serial: 90:e2:ba:05:bf:70
logical name: eth3
serial: 90:e2:ba:05:bf:71
logical name: eth4
serial: 90:e2:ba:05:bf:74
logical name: eth5
serial: 90:e2:ba:05:bf:75
logical name: bond0
serial: d4:ae:52:69:7a:20
Für diesen Fall ist es nötig, "facter" zu bemühen:
# facter | fgrep -i address ipaddress => 192.168.1.2 ipaddress_bond0 => 192.168.1.2 ipaddress_bond0_1 => 192.168.1.3 ipaddress_lo => 127.0.0.1 macaddress => d4:ae:52:69:7a:20 macaddress_bond0 => d4:ae:52:69:7a:20 macaddress_bond0_1 => d4:ae:52:69:7a:20 macaddress_eth0 => D4:AE:52:69:7A:20 macaddress_eth1 => D4:AE:52:69:7A:21 macaddress_eth2 => 90:e2:ba:05:bf:70 macaddress_eth3 => 90:e2:ba:05:bf:71 macaddress_eth4 => 90:e2:ba:05:bf:74 macaddress_eth5 => 90:e2:ba:05:bf:75