为编写Python脚本实现H3C交换机自动化配置笔记一
Python脚本需求:通过SSH自动化配置H3C交换机
核心目标:通过Python脚本(使用Paramiko/Netmiko库)连接H3C交换机,依次完成以下配置任务,需兼容Comware V7系统。
______
一、环境与连接要求
SSH连接
使用paramiko或netmiko库建立SSH连接(设备类型为hp_comware)。
脚本需支持输入交换机IP、用户名、密码作为参数。
关闭不安全服务
关闭Telnet:undo telnet server enable。
关闭FTP/SFTP:undo ftp server enable、undo sftp server enable。
开启SSH
生成RSA密钥:public-key local create rsa。
启用SSH服务:ssh server enable、ssh version 2。
创建SSH用户并绑定服务类型:
local-user [username] password cipher [password]
local-user [username] service-type ssh
ssh user [username] authentication-type password
。
______
二、基础配置模块
Console口配置
设置Console超时时间:user-interface con 0 → idle-timeout 15 0(15分钟超时)。
启用密码认证:authentication-mode password。
TACACS认证
配置TACACS服务器:
tacacs scheme [scheme_name]
primary server [ip]
key cipher [key]
应用至登录认证:user-interface vty 0 4 → authentication-mode scheme。
VLAN 230配置
创建VLAN:vlan 230。
配置VLAN接口IP:interface vlan 230 → ip address [IP] [mask](如192.168.230.1/24)。
DHCP服务
启用DHCP:dhcp enable。
创建地址池并绑定VLAN 230:
dhcp server ip-pool vlan230_pool
network [subnet] mask [mask] # 如192.168.230.0/24
gateway-list [gateway_ip] # 如192.168.230.1
dns-list [dns_ip] # 如114.114.114.114
。
______
三、接口与安全配置
Trunk接口配置
指定接口(如GigabitEthernet 1/0/1):
interface [interface_name]
port link-type trunk
port trunk permit vlan 230 # 允许VLAN 230通过
。
端口安全与检测
启用端口安全:port-security enable。
动态ARP检测:arp-detect enable(在目标接口下启用)。
镜像口配置
创建本地镜像组:mirroring-group 1 local。
绑定源端口(被监控端口)和目的端口(抓包端口):
mirroring-group 1 mirroring-port [src_interface] both # both表示双向流量
mirroring-group 1 monitor-port [dest_interface]
(如监控G1/0/1,镜像到G1/0/10)。
______
四、脚本逻辑要求
配置顺序:
先启用SSH并关闭其他服务 → 基础配置(Console/TACACS) → VLAN/DHCP → 接口配置 → 镜像口。
错误处理:
命令执行失败时抛出异常并记录日志(如端口配置冲突)。
支持回滚机制(异常时保存当前状态并尝试恢复)。
配置保存:
每阶段完成后自动保存:save force(避免断电丢失配置)。
输入参数示例:
switch_ip = "192.168.1.1"
username = "admin"
password = "admin123"
vlan_ip = "192.168.230.1"
dhcp_pool = ("192.168.230.2", "192.168.230.100")
______
五、参考命令模板(Python示例)
from netmiko import ConnectHandler
device = {
"device_type": "hp_comware",
"host": "192.168.1.1",
"username": "admin",
"password": "admin123",
}
commands = [
"system-view",
"undo telnet server enable",
"undo ftp server enable",
"public-key local create rsa",
"ssh server enable",
"local-user admin password cipher Admin@123",
"local-user admin service-type ssh",
# ... 后续命令按上述模块顺序添加
]
with ConnectHandler(**device) as conn:
for cmd in commands:
output = conn.send_command(cmd, expect_string=r"]") # 匹配Comware提示符
if "Error" in output:
raise Exception(f"Command failed: {cmd}")
conn.save_config() # 保存配置
______
注意事项:
兼容性:部分命令需根据Comware版本调整(如V5/V7差异)。
测试验证:首次运行建议在非生产环境测试,避免配置冲突。
扩展性:可封装函数模块(如configure_ssh()、setup_dhcp_pool())提升复用性。
以上提示词覆盖全部需求,工程师可直接基于此编写脚本。若需调试细节(如TACACS密钥加密方式),可结合H3C官方文档调整。