繁体   English   中英

Linux Bash:列出具有 IP 和 Mac 地址的接口

[英]Linux Bash: List interfaces with IPs and Mac addresses

我正在研究 CentOS。 这是我第一次在基于 UNIX 的操作系统中乱搞,而且很难习惯。 我对 Powershell 有更扎实的经验。 无论如何,我的任务是列出所有接口及其对应的 IP 和 MAC 地址。 有没有一种简单的方法可以做到这一点? 我发现

ip addr

显然有我需要的所有信息,但我不知道如何从字符串中“删除”我需要的信息。 我想以某种可读的格式列出它们,如下所示:

interfacename       ipaddress         macaddress

写一个这样的脚本:

#!/bin/bash

printf '%10s %32s %32s\n' interface ipaddress macaddress
printf '%s\n' '----------------------------------------------------------------------------'
for each in $(ip address | grep -oP '(^[\d]+:\s)\K[\d\w]+'); do
  mac=$(ip address show ${each} | grep -oP '(?<=link/ether\s)\K[\da-f:]+|(?<=link/loopback\s)\K[\da-f:]+')
  for address in $(ip address show ${each} | grep -oP '(?<=inet\s)\K[\d.]+|(?<=inet6\s)\K[\da-f:]+'); do
    printf '%10s %32s %32s\n' ${each} ${address} ${mac}
  done
done

Output:

 interface                        ipaddress                       macaddress
----------------------------------------------------------------------------
        lo                        127.0.0.1                00:00:00:00:00:00
        lo                              ::1                00:00:00:00:00:00
      wlo1                      192.168.0.7                c8:aa:bb:cc:dd:ee
      wlo1        fe80::7aec:8287:9f45:d833                c8:aa:bb:cc:dd:ee
   docker0                       172.17.0.1                02:42:0d:0d:0d:0d
      tap0                        10.1.30.2                16:50:cc:cc:cc:cc
      tap0        fe80::10a9:d3ff:fece:57d7                16:50:cc:cc:cc:cc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM