Stampa l'indirizzo mac su file


Risposte:


15

ifconfig produrrà informazioni sulle tue interfacce, incluso l'indirizzo MAC:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:11:22:33:44:55  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:289748093 errors:0 dropped:0 overruns:0 frame:0
          TX packets:232688719 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3264330708 (3.0 GiB)  TX bytes:4137701627 (3.8 GiB)
          Interrupt:17 

L' HWaddrè quello che volete, in modo da poter utilizzare awkper filtrare:

$ ifconfig eth0 | awk '/HWaddr/ {print $NF}'
00:11:22:33:44:55

Reindirizzalo in un file:

$ ifconfig eth0 | awk '/HWaddr/ {print $NF}' > filename

2
È inoltre possibile utilizzare esimo ipcomando: /sbin/ip link show eth0.
Keith,

2
@Michael Su Linux, comunque, è lo strumento preferito . In effetti è necessario utilizzare per configurare alcune funzionalità avanzate. Ma ifconfig vive ...
Keith,

3
L'approccio internazionale è LC_ALL=C ifconfig eth0 | awk '/HWaddr/ {print $NF}'perché l'output potrebbe essere localizzato, non corrispondente a "HWaddr". LC_ALL = C utilizza lo standard internazionale.
utente sconosciuto

2
@utente Ah, bello. Per quanto ne so, sarà sempre la prima riga, quindi potresti awk '{print $NF; exit}'anche
cavartela

1
Sì, se sei del tipo AWK. Sono il tipo sed, ma qui preferirei un | head -n 1allora.
utente sconosciuto

8

Ecco un moderno metodo Linux:

ip -o link show dev eth0 | grep -Po 'ether \K[^ ]*'

E 'moderno, che ifconfigè da tempo deprecato a favore del ipdal iproute2pacchetto, e che grepha la -Ppossibilità per le espressioni regolari Perl per la larghezza zero positivi look-dietro asserzione .

grep -oè bello per l'estrazione del testo. sedè tradizionalmente usato per questo, ma trovo le asserzioni di larghezza zero in stile perl più chiare di un comando di sostituzione sed.

In realtà non hai bisogno -odell'opzione (online) ip, ma preferisco usarlo quando estraggo le informazioni di rete poiché trovo più pulito avere un record per riga. Se stai facendo corrispondenze o estrazioni più complicate (di solito con awk), -oè essenziale per uno script pulito, quindi per motivi di coerenza e uno schema comune, lo uso sempre.


1
@michelemarcon: questo non usa perl. Usa recenti GNU grep e grep ha un'opzione per usare espressioni regolari in stile perl.
Camh

Ho un sacco di soldi, grazie comunque per il chiarimento. +1
michelemarcon,

5
#! /bin/sh

/sbin/ifconfig eth0 | perl -ne 'print "$1\n" if /HWaddr\s+(\S+)/' >file

Ci sono altri strumenti che potrebbero ifconfigovviamente escludere l'indirizzo MAC dall'output dell'output. Mi piace solo Perl.


1
Non ho perl sul mio sistema ... :( Tuttavia, +1
michelemarcon,

0

Utilizzando ip -br link show eth0verrà stampato qualcosa del genere:

$ ip -br link show eth0 
eth0             UP             85:e2:62:9c:b2:02 <BROADCAST,MULTICAST,UP,LOWER_UP>

Hai solo bisogno della terza colonna, quindi:

$ ip -br link show eth0 | awk '{ print $3 }'
85:e2:62:9c:b2:02
$ ip -br link show eth0 | awk '{ print $3 }' > file
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.