NetDevOps:华三交换机通过Netmiko或者Nornir获取接口信息通过TextFSM解析报错问题

本文介绍了如何使用Python的Netmiko库通过SSH连接到交换机,执行特定命令以获取接口信息,并利用TextFSM进行解析。作者解决了因命令格式问题导致的报错,展示了处理网络设备命令解析的实践过程。
部署运行你感兴趣的模型镜像

python代码:实现功能获取交换机接口信息并通过TextFSM进行解析。

from netmiko import Netmiko
import textfsm
show_intf_cmd_mapping = {
    'hp_comware': 'display interface',
}

def ssh_device_2_get_intfs(device_type, host, username, password, port):
    dev_info = {
        'device_type': device_type,
        'host': host,
        'username': username,
        'password': password,
        'port': port,
    }

    cmd = show_intf_cmd_mapping.get(device_type)
    if not cmd:
        raise Exception('暂不支持此类设备的端口采集')
    with Netmiko(**dev_info) as net_conn:
        intfs = net_conn.send_command(cmd, use_textfsm=True)
        print(intfs)

if __name__ == '__main__':
    dev_info = {
        'device_type': 'hp_comware',
        'host': '192.168.56.14',
        'username': 'admin',
        'password': 'xxx',
        'port': 22,
    }
    ssh_device_2_get_intfs(**dev_info)

代码执行后报错如下

应该是此条信息无法匹配查看端口采集信息

查看解析模板在“^\s*Unicast”后添加“^\s*Known-unicast”

添加后

再次运行,解析正常。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们正在配置H3C交换机以使用ACL(访问控制列表)来封禁常见的高危端口,并将这个ACL应用到所有物理接口上。高危端口通常是指那些经常被恶意软件或攻击利用的端口,例如:135/TCP(RPC)、137/UDP(NetBIOS名称服务)、138/UDP(NetBIOS数据报服务)、139/TCP(NetBIOS会话服务)、445/TCP(SMB)、1433/TCP(SQLServer)、3306/TCP(MySQL)、3389/TCP(RDP)等。步骤概述: 1.创建ACL,定义需要封禁的端口规则(通常使用高级ACL,即数字范围在3000-3999的ACL)。2.将ACL应用到交换机的所有物理接口(包括入方向和出方向,但通常我们关注入方向,因为外部流量进入)。注意:在应用ACL时,我们需要考虑交换机的接口类型(如以太网接口)以及方向(inbound或outbound)。由于我们要封禁从外部访问这些高危端口的流量,所以通常应用在接口的入方向(inbound)。 具体配置步骤:###1.创建高级ACL我们创建一个高级ACL(例如ACL3000),并添加多条规则来拒绝指定的TCP和UDP端口。```bash#进入系统视图system-view#创建ACL3000acladvanced3000#配置规则,拒绝访问指定的TCP端口(目的端口)rule denytcpdestination-porteq135# RPCrule denytcpdestination-porteq139# NetBIOSSessionServicerule denytcpdestination-porteq445# SMBrule denytcpdestination-porteq1433#MSSQLrule denytcpdestination-porteq3306#MySQLrule denytcpdestination-porteq3389#RDP#可以根据需要添加其他高危端口#配置规则,拒绝访问指定的UDP端口rule denyudpdestination-porteq137# NetBIOSName Serviceruledeny udp destination-port eq138#NetBIOS Datagram Service#可以根据需要添加其他高危端口#注意:默认情况下,ACL最后有一条隐含的允许所有的规则。因此,我们只需要添加拒绝规则,其他流量会被允许。#退出ACL视图quit```###2.将ACL应用到所有物理接口我们需要遍历交换机的所有物理接口(如GigabitEthernet接口),并在每个接口的入方向应用ACL3000。```bash#使用循环结构(在H3C设备上支持使用`interfacerange`命令批量配置,但不同型号支持程度不同,这里使用遍历方式) #假设物理接口范围是从GigabitEthernet1/0/1到GigabitEthernet1/0/24(具体根据实际接口数量调整) #进入接口视图interface rangeGigabitEthernet1/0/1 toGigabitEthernet1/0/24#在接口入方向应用ACL3000packet-filter inboundip-group3000#退出接口视图quit``` 如果交换机不支持`interface range`命令,则需要逐个接口配置。但这样很麻烦,所以我们可以使用批处理方式(在支持range的交换机上使用)。 ###3.保存配置配置完成后,保存配置以便重启后仍然生效。 ```bashsave``` ###注意事项: -**ACL应用方向**:我们通常在入方向(inbound)应用ACL来过滤进入交换机的流量,这样可以阻止外部流量访问这些高危端口。但也要注意,如果内部有主动访问外部高危端口的情况,则可能需要考虑出方向(outbound)的过滤。不过,封禁高危端口主要是防止外部攻击,所以入方向是重点。 -**ACL规则顺序**:ACL规则按照配置顺序进行匹配,一旦匹配到规则就停止。因此,我们按照需要封禁的端口顺序配置即可。 -**隐含规则**:H3CACL默认在最后有一条允许所有(permitip)的规则,所以只配置拒绝规则即可。 -**管理端口**:注意不要将ACL应用到管理接口(如VLAN接口)上,以免封锁了管理流量。如果管理接口是三层接口,那么应用在三层接口的入方向也可能封锁管理流量。因此,我们通常只应用在连接用户或外部网络的物理接口上,而管理接口(如VLANIF)需要谨慎。如果管理是通过单独的管理接口(如Management接口)进行的,则不需要在这些管理接口上应用此ACL。 ###补充:如果需要同时封禁源端口为高危端口的流量(例如防止内部主机使用这些端口发起连接),可以在ACL中添加规则。但一般情况下,封禁目的端口已经足够。###引用说明在配置ACL时,我们参考了H3C交换机的标准配置指南[^1]。§§相关问题§§1.如何验证ACL是否生效? 2.如何查看ACL的匹配统计信息?3.如何修改ACL规则?4.除了封禁高危端口,还有哪些常见的安全配置建议?</think>### H3C交换机配置ACL封禁高危端口指南 #### 一、高危端口列表 常见高危端口及协议: - **TCP端口**:`135`(RPC), `139`(NetBIOS), `445`(SMB), `1433`(MSSQL), `1521`(Oracle), `3306`(MySQL), `3389`(RDP) - **UDP端口**:`137-138`(NetBIOS), `1434`(MSSQL), `1900`(UPnP) #### 二、配置步骤 1. **创建高级ACL** ```bash system-view acl advanced 3000 # 创建ACL 3000(3000-3999为高级ACL范围) rule deny tcp destination-port eq 135 # 封禁RPC rule deny tcp destination-port eq 139 # 封禁NetBIOS rule deny tcp destination-port eq 445 # 封禁SMB rule deny tcp destination-port eq 1433 # 封禁MSSQL rule deny tcp destination-port eq 3389 # 封禁RDP rule deny udp destination-port range 137 138 # 封禁NetBIOS UDP quit ``` 2. **应用到所有物理接口** ```bash interface range GigabitEthernet 1/0/1 to GigabitEthernet 1/0/48 # 根据实际接口修改 packet-filter inbound ip-group 3000 # 在入方向应用ACL quit ``` 3. **验证配置** ```bash display acl 3000 # 查看ACL规则 display packet-filter interface GigabitEthernet 1/0/1 # 检查接口应用状态 ``` #### 三、关键注意事项 1. **方向选择**: - `inbound`:过滤进入交换机的流量(推荐) - `outbound`:过滤从交换机发出的流量 2. **特殊接口处理**: - 管理接口需单独放行:`rule permit tcp destination-port eq 22` (SSH) - 聚合链路接口需同步应用 3. **ACL特性**: - 默认**隐含拒绝所有**规则 - 规则按**配置顺序匹配**(无序号时自动排序) 4. **配置优化建议**: ```bash time-range offpeak 08:00 to 18:00 working-day # 创建时间范围 rule deny tcp destination-port eq 3306 time-range offpeak # 分时段封禁 ``` #### 四、故障排查 1. **ACL未生效**: - 检查是否`save`保存配置 - 确认接口方向(`inbound/outbound`) - 验证物理接口状态`display interface brief` 2. **误封正常业务**: - 添加放行规则:`rule permit ip destination x.x.x.x 0` - 使用`logging`参数记录命中日志:`rule deny tcp destination-port eq 445 logging` > **重要提示**:生产环境操作前应在测试环境验证,并确保有带外管理通道[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值