ajc*_*jcg 11 command-line ubuntu
如果我运行命令
ip link | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 18.04 中,我得到以下输出:
lo:
00:00:00:00:00:00
wlp1s0:
2c:6e:85:bf:01:00
enp2s0:
14:18:77:a3:01:02
Run Code Online (Sandbox Code Playgroud)
我希望它像这样格式化(没有lo)
wlp1s0: 2c:6e:85:bf:01:00
enp2s0: 14:18:77:a3:01:02
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
mur*_*uru 18
如果您使用的是 Ubuntu,则可以从/sys/class/net/<dev>/address以下位置获取 MAC 地址:
$ cat /sys/class/net/enp0s3/address
08:00:27:15:dc:fd
Run Code Online (Sandbox Code Playgroud)
所以,像这样:
find /sys/class/net -mindepth 1 -maxdepth 1 ! -name lo -printf "%P: " -execdir cat {}/address \;
Run Code Online (Sandbox Code Playgroud)
给我:
enp0s3: 08:00:27:15:dc:fd
docker0: 02:42:61:cb:85:33
Run Code Online (Sandbox Code Playgroud)
或者,使用ip的单行模式,方便脚本编写:
$ ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}'
enp0s3: 08:00:27:15:dc:fd
docker0: 02:42:61:cb:85:33
Run Code Online (Sandbox Code Playgroud)
ip -o link | grep ether | awk '{ print $2" : "$17 }'
Run Code Online (Sandbox Code Playgroud)
-o给出了每个接口的在线结果。grep ether 仅过滤掉那些分配了以太网地址的接口。awk简单地从行中打印第 2 和 17 列,中间有一个冒号。或者
ip -br link | grep -v LOOPBACK | awk '{ print $1 " : " $3 }'
Run Code Online (Sandbox Code Playgroud)
在哪里
-br给出brief接口信息。grep -v LOOPBACK忽略LOOPBACK仅出现在lo界面中的词。awk打印第一列和第三列。ifconfig | grep HW | awk '{ print $1" : "$5 }'
Run Code Online (Sandbox Code Playgroud)
wheregrep HW只过滤掉那些分配了硬件地址的接口。
grep HW或者grep ether实际上忽略了lo因为
| 归档时间: |
|
| 查看次数: |
28551 次 |
| 最近记录: |