Ubuntu'da komut ile ifconfig -aethernet / wifi arayüzlerimle ilgili tüm bilgileri edindim.
Ancak , yalnızca MAC adresi olarak çıktı almam gerekiyor , şöyle ki:
ab:cd:ef:12:34:56
57:89:12:34:ac:23
12:34:56:ab:cd:ef
Bunu nasıl elde edebilirim?
Ubuntu'da komut ile ifconfig -aethernet / wifi arayüzlerimle ilgili tüm bilgileri edindim.
Ancak , yalnızca MAC adresi olarak çıktı almam gerekiyor , şöyle ki:
ab:cd:ef:12:34:56
57:89:12:34:ac:23
12:34:56:ab:cd:ef
Bunu nasıl elde edebilirim?
Yanıtlar:
En kolay yol grepPCRE ile kullanmak olacaktır :
$ ifconfig -a | grep -Po 'HWaddr \K.*$'
74:d4:35:84:34:13
grep -Pperluyumlu Regex kullanmamızı sağlayacak
grep -o sadece çizginin eşleşen kısmını alacaktır
Biz eşleştirdiniz HWaddrbizim arzu maç (MAC adresleri) önce ve sonra atmak HWaddrtarafından \Ksadece MAC adreslerini yazdırmak için.
@Helio önemli bir noktadan bahsetti, bu sizin dilinize, yani localeayarlarınıza oldukça bağlı . CYerel ayarları (ASCII karakter kümesini kullanır) yalnızca bu komut için kullanabileceğinizi aşmak için:
$ LANG=C ifconfig -a | grep -Po 'HWaddr \K.*$'
74:d4:35:84:34:13
ifconfig -a | grep -i hw-*?
-*şey ifade etmesi mi gerekiyor?
HWama o belirtilen HWaddrve G / tahmin gördüğünüz gibi ispanyolca direcciónHWbasitçe sadece oluyor böylece HW); olabilir
grep"son derece deneysel" dir. Temel regex kullanmak istiyorsanız, eşdeğer komut ifconfig -a | grep -o 'HWaddr [[:xdigit:]:]*'veya eğer isterseniz ifconfig -a | grep -o 'HWaddr [a-f0-9:]*',. İzi ihmal ettim $çünkü çıktı MAC adresinden sonra boşluklar içeriyor ve muhtemelen bunları istemiyorsunuz.
Sanal dosya sistemindeki addressher cihaz için dosyaya erişebilirsiniz /sys. MAC adresi şöyle olmalıdır /sys/class/net/<device-name>/address:
$ cat /sys/class/net/enp1s0/address
34:17:eb:5d:88:7c
Tüm cihazlar için:
$ cat /sys/class/net/*/address
34:17:eb:5d:88:7c
00:00:00:00:00:00
64:5a:04:69:50:45
ipayrıca yıllardır civarında olmuştur.
İşte birkaç yol:
grep. Bunları alacak olan düzenli ifadeler var. Burada, iki harf veya ardından iki noktadan sonra 2 harf veya sayıdan oluşan 5 tekrar arıyorum. -iMaç vaka duyarsız hale getirir ve -omarkaları grepsadece eşleşti bölümünü yazdırmak. -Egenişletilmiş düzenli ifadeler sağlar. Aynı regex PCRE'ler ( -P) ile de çalışır .
ifconfig -a | grep -ioE '([a-z0-9]{2}:){5}..'
sed. -nNormal çıkış bastırır ve -rgenişletilmiş düzenli ifadeler sağlar. Yukarıdakiyle aynı regex kullanarak, bu komut satırı ile ilgili her şeyi regex ile eşleşen kısmıyla değiştirmeye çalışır. Eğer oyuncu değişikliği başarılı olduysa, sonuçtaki satır ( poyuncu değişikliği sonunda) yazdırılır .
ifconfig -a | sed -rn 's/.*(([a-z0-9]{2}:){5}..).*/\1/p'
awk. Satır bir kelime karakteriyle ( [a-zA-Z0-9_]) başlıyorsa ve 5 alan varsa, sonuncuyu yazdırın.
ifconfig -a | awk '/^\w/&&NF==5{print $NF}'
Perl, her zamanki gibi, yapmanın birden fazla yolu var. Bu, awkyukarıdakiyle aynı mantıktır . -aHer bir giriş hattını ayırmak için Perl anlatır @Fdizisi.
ifconfig -a | perl -lane 'if(/^\w/&&$#F==4){print $F[$#F]}'
Alternatif olarak, regex'i önceki yaklaşımlardan kullanabilirsiniz:
ifconfig -a | perl -lne '/(([a-z0-9]{2}:){5}..)/ && print $1'
Coreutils.
LANG_ALL=C ifconfig -a | grep 'HWadd' | tr -s ' ' '\t' | cut -f 5
Bazılarının da söylediği gibi, komutun ifconfiglehine itiraz edildi ip. Bu yüzden çeşitli çözümleri ve yorumları birleştirerek kullanırdım:
$ LANG=C ip link show | awk '/link\/ether/ {print $2}'
FF:FF:FF:FF:FF:FF
ifconfig -a | grep HWaddr | awk '{print $5}'
Sistem çıktınız bu komutta İngilizce değilse, bu şekilde çalıştırmanız mantıklı olacaktır.
LANG=C ifconfig -a | grep HWaddr | awk '{print $5}'
Bu, tüm çözümler için geçerlidir.
grepAyrı ayrı kullanmak yerine awkdoğrudan şöyle filtreleyebilirsiniz :ifconfig -a | awk '/HWaddr/ { print $5 }'
LANG=C ifconfig -ayerine ifconfig -agrep ile ilgili sorunlar olabilir, olmayan ingilizce yüklemeler için. (yani benim sistemde, HWaddrolduğu direcciónHW)
@Helioyorumun başına geçin. Olmazsa, haberdar edilmeyeceğim.
LANG=C ifconfig -ayerineifconfig -agrep ile ilgili sorunlar olabilir, olmayan ingilizce yüklemeler için. (yani benim sistemde,HWaddrolduğudirecciónHW)