2017-10-15 39 views
0

我想使用shell通過mac地址獲取設備名稱。例如,MAC = 「EC:F4:BB:E1:0C:1D」,和原來的字符串是這樣的:如何通過使用shell的mac地址獲取設備名稱?

[[email protected] ~]# ip link show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
2: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 
    link/ether ec:f4:bb:e1:0c:1c brd ff:ff:ff:ff:ff:ff 
3: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 
    link/ether ec:f4:bb:e1:0c:1d brd ff:ff:ff:ff:ff:ff 
6: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noqueue state DOWN mode DEFAULT 
    link/ether 1a:e5:33:75:83:f2 brd ff:ff:ff:ff:ff:ff 
7: bond1: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT 
    link/ether 8e:cd:30:03:ea:54 brd ff:ff:ff:ff:ff:ff 
923: enp1s16: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT qlen 1000 
    link/ether 8e:cd:30:03:ea:54 brd ff:ff:ff:ff:ff:ff 
924: enp1s16f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond1 state UP mode DEFAULT qlen 1000 
    link/ether 8e:cd:30:03:ea:54 brd ff:ff:ff:ff:ff:ff 
973: ovs-netdev: <BROADCAST,PROMISC> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 500 
    link/ether aa:21:35:c1:92:a4 brd ff:ff:ff:ff:ff:ff 
974: bradm: <BROADCAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 500 
    link/ether c2:15:a9:8b:db:40 brd ff:ff:ff:ff:ff:ff 
976: br_t: <BROADCAST,PROMISC> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 500 
    link/ether ec:f4:bb:e1:0c:18 brd ff:ff:ff:ff:ff:ff 
977: brpri: <BROADCAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 500 
    link/ether 82:f9:07:9d:d0:45 brd ff:ff:ff:ff:ff:ff 
978: breip: <BROADCAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 500 
    link/ether 0e:7b:96:6b:22:4c brd ff:ff:ff:ff:ff:ff 

如果我使用Python,我可以用re.split(),但我不知道如何在外殼做,謝謝〜

+1

你嘗試過這麼遠嗎? 'grep'和'awk'和'sed'是常用的Unix工具,用於在命令行上執行模式匹配和轉換。 – larsks

回答

0

在CentOS 7:

爲get_device_by_hwaddr()函數
$ source /etc/sysconfig/network-scripts/network-functions && get_device_by_hwaddr 12:34:56:9d:5b:0a 
ens160 

來源:

$ grep get_device_by_hwaddr -A 3 /etc/sysconfig/network-scripts/network-functions 
get_device_by_hwaddr() 
{ 
    LANG=C ip -o link | awk -F ': ' -vIGNORECASE=1 '!/link\/ieee802\.11/ && /'"$1"'/ { print $2 }' 
} 
相關問題