linux - Linux Bash:列出具有 IP 和 Mac 地址的接口
问题描述
我正在开发 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
输出:
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
推荐阅读
- javascript - 不确定如何将 JSON 数组映射到组件
- java - 使用 javax.ws.rs.* 创建 REST Client,但 POST 请求无法正常工作
- unity3d - 如何在不编译为 IL2CPP 的情况下保护统一程序集?
- c# - 在 C# 中从 xamarin sql 数据库加载第一项
- node.js - 如何根据用户角色处理 REST API
- google-bigquery - GA4 事件未出现在 BigQuery 中
- c# - 我的代码没有着色,我的智能感知工作不正常
- javascript - 里程表 JS 类似的类名
- excel - Excel 公式查找哪些匹配行具有最新的日期,然后使用找到的值更新其他行
- java - ZK 如何使用所选项目更新 ListBox ListModel