吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 188|回复: 15
上一主题 下一主题
收起左侧

[经验求助] 接入设备在交换机中的端口号查找

[复制链接]
跳转到指定楼层
楼主
白羊君 发表于 2026-10-26 14:21 回帖奖励
500吾爱币
本帖最后由 白羊君 于 2026-10-26 14:33 编辑

老板要统计在用设备,包含设备在交换机中的端口号。
我们这边是做了mac地址白名单认证,目前是登录到接入交换机然后dis mac-authentication connection,看到的mac地址在哪个端口,但是效率有点低,一次显示一条,复制一条敲一下,再复制下一条,有没有能批量导出的方法。
周三早上要交了,求大佬指教。

发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
winant 发表于 2026-10-26 14:35
用dis mac-address,直接查看MAC 地址转发表,行不行?
3#
打酱油的笨小孩 发表于 2026-10-26 14:36
AI回复按照你现在的做法,`dis mac-authentication connection` 确实是一次只返回一条记录,在需要全量统计时效率非常低。要赶在周三前完成,最直接的方式是换用 `display mac-address` 系列命令,直接导出整张 MAC 地址表,再配合重定向或脚本一次性保存到本地。

### 最快捷的方案:命令行重定向直接存文件

如果你的交换机支持本地存储(`flash:`),登录交换机后直接执行带重定向的命令,把全量 MAC 表写入设备文件,再通过 FTP/SFTP 下载下来即可。

**华为设备:**
```bash
<HUAWEI> display mac-address verbose > flash:/mac_log.txt
```
执行后,全量 MAC 地址表(包含 MAC、VLAN、端口、类型等字段)会保存到设备 flash 中,之后用 FTP 把 `mac_log.txt` 取回即可。

**H3C 设备:**
H3C 同样支持 `display mac-address` 命令,输出字段包含 MAC Address、VLAN ID、State、Port/NickName 等。如果设备支持重定向,可以尝试:
```bash
<Sysname> display mac-address > flash:/mac_table.txt
```
也可以用 `| include` 过滤指定端口或 MAC 段,但全量导出仍以重定向为主。

> **注意**:如果交换机 flash 空间不足,可以改用 TFTP 方式:`tftp 服务器IP put flash:/mac_log.txt`,或者直接把屏幕输出复制到本地文本文件(不推荐,但应急可用)。


### 自动化方案:Python 脚本批量采集

如果接入交换机不止一台,或者 flash 空间有限,用脚本批量登录采集会更稳妥。

**方案一:SNMP + Python(推荐,无需逐台登录)**

GitHub 上有一个现成的工具 `snmp-collector`,专门用于华为交换机通过 SNMP 获取 MAC 与接口的映射关系,并生成 CSV 文件。它的原理是通过三个关键 OID 的关联实现映射:

- `dot1dTpFdbAddress`:MAC 地址表
- `dot1dTpFdbPort`:MAC 对应的端口索引
- `ifName`:端口索引对应的接口名称

核心用法:
```bash
python complete_workflow.py
```
工具会自动收集数据、完成映射,并输出 `output.csv`,字段包括 MAC 地址、端口索引、接口名称。你只需要提前在脚本中配置好交换机的 SNMP 团体名和管理 IP。

**方案二:Netmiko/Paramiko 批量 SSH 登录**

如果交换机只开了 SSH、没开 SNMP,可以用 Python 的 `netmiko` 或 `paramiko` 批量登录每台交换机,执行 `display mac-address`,把回显保存为以主机名命名的 txt 文件,再用正则提取 MAC、端口、VLAN。思路是:

1. 准备 Excel 设备清单(交换机名、管理 IP、用户名、密码)
2. 脚本循环读取清单,SSH 登录
3. 执行 `display mac-address`,将回显写入 `{hostname}.txt`
4. 再用解析脚本把 txt 整理为 CSV

H3C 官方知识库中已有类似脚本的完整示例,可以直接参考其解析逻辑。


### 关于 MAC 认证场景的一个提醒

你目前用的是 `dis mac-authentication connection`,这条命令查的是**认证在线表**,而不是完整的 MAC 地址表。两者有细微差别:MAC 地址表中可能包含未通过认证的终端、级联端口学习到的上游设备 MAC 等。

如果老板要求的是“所有在用设备”的端口位置,`display mac-address` 的信息更全;如果只要“已通过 MAC 白名单认证”的设备,可以先导出全量 MAC 表,再用认证表做一次比对过滤,这样能避免遗漏或混入无关条目。如果交换机上大量端口处于 down 状态,`display mac-address` 不会显示这些端口,导出前可以先确认端口状态是否完整。


### 周三前的应急操作顺序

1. **先在任意一台接入交换机上试跑** `display mac-address verbose > flash:/mac_log.txt`,确认文件生成且内容完整。
2. 如果交换机数量不多(比如 10 台以内),逐台执行重定向并下载,手动合并成一张表也来得及。
3. 如果交换机数量多,优先用 SNMP 工具跑一轮,或者临时写一个 20 行左右的 Netmiko 脚本批量采集。
4. 导出的 CSV 中保留 **MAC 地址、VLAN ID、端口名称** 三列,就足以满足“在用设备 + 交换机端口”的统计需求。
4#
winant 发表于 2026-10-26 14:36
用dis mac-address,直接查看MAC 地址转发表,行不行?
5#
wc614445720 发表于 2026-10-26 14:55
问了一下GPT,楼主可以这样试试:

第一步:在 Xshell、SecureCRT 等终端软件里,开启“会话日志/记录到文件”。

第二步:在交换机上依次执行下面两条命令:

screen-length disable

display mac-authentication connection | include "User MAC address|Access interface"

第一条取消分页,第二条只显示 MAC 地址和对应端口,所有结果会连续输出。

第三步:等输出结束后,停止日志记录,整台交换机的查询结果就保存到电脑了。

如果第二条命令报错,就换成原来的命令,同样可以完整记录:

display mac-authentication connection
6#
吾爱逍遥 发表于 2026-10-26 14:55
你用的命令不加筛选条件,本身就会输出所有端口的在线 MAC 认证记录,只是每条记录比较长。

### 方法一:关闭分页,一次保存全部输出(推荐)

1. 在 Xshell、SecureCRT 或 PuTTY 中开启“会话日志/记录到文件”。
2. 在交换机的 `<交换机名>` 提示符下依次执行:
   ```text
   screen-length disable
   display mac-authentication connection
   ```
3. 等全部输出结束、重新出现提示符后,停止记录。
4. 恢复分页:
   ```text
   undo screen-length disable
   ```

这样就能一次保存所有记录,不用逐条翻页、复制。关闭分页只影响本次登录会话,不修改 MAC 认证配置,也不需要 `save`。[分页命令说明](https://www.h3c.com/en/d_201905/1176151_294551_0.htm)

### 方法二:直接输出为交换机上的文本文件

支持输出重定向的版本可以执行:

```text
display mac-authentication connection > mac_online_20261026.txt
```

注意:**文件在交换机上,不在你的电脑上**,需要通过现有的文件传输方式取回;`>` 会覆盖同名文件。[输出重定向说明](https://www.h3c.com/cn/d_202108/1455586_30005_0.htm)

### 给老板的统计表建议

把完整日志按每个 `User MAC address` 记录块提取成:

| 交换机名称/管理IP | MAC地址 | 接入端口 | IPv4地址 | 认证状态 | 采集时间 |
|---|---|---|---|---|---|

其中,截图里的 `Access interface` 就是所需端口号,例如 `GigabitEthernet1/0/37`。

**统计时注意:**
- 这是采集时刻的在线认证记录,不是完整白名单或全部资产;关机、离线设备可能不在里面。
- 以 `User access state: Successful` 区分认证成功记录。
- 有的记录只有 IPv6、没有 IPv4,转 Excel 时应按字段名解析,别固定“每几行算一台”,否则容易串行错配。

Contract check: 全量查询、批量保存、分页恢复、统计口径。

AI回复的
7#
 楼主| 白羊君 发表于 2026-10-26 14:56 |楼主
wc614445720 发表于 2026-10-26 14:55
问了一下GPT,楼主可以这样试试:

第一步:在 Xshell、SecureCRT 等终端软件里,开启“会话日志/记录到 ...

安全不安全啊
8#
wc614445720 发表于 2026-10-26 15:00

应该没有问题,你参考一下吧,
按上面这两条命令原样执行,一般不会影响正常网络业务。

第一条只是取消本次登录的分页显示,退出重新登录就恢复了;第二条只是查询 MAC 认证记录,筛选出 MAC 和端口号。

不会修改认证配置,也不需要重启交换机。开启会话日志,就是把终端输出保存到自己的电脑上。
9#
 楼主| 白羊君 发表于 2026-10-26 15:10 |楼主
wc614445720 发表于 2026-10-26 15:00
应该没有问题,你参考一下吧,
按上面这两条命令原样执行,一般不会影响正常网络业务。

刚试了一下,确实一下子显示了很多。比之前的效率高
10#
ysq151 发表于 2026-10-26 16:14
display mac-address authen不行吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-10-27 05:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表