“小时级”到“分钟级”,这招,一键完成多台交换机基础设置

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

前阵子一项目要配50台华为交换机,新人手动配置,三天还没干完,还错了一半。我写了个脚本,20分钟跑完,零差错。他说:“这也能自动化?”我说:“你还在用算盘,别人早用Excel了。”很多网工把“会配设备”当本事,却不知道“让机器替你配”才是真本事。今天,我不讲理论,直接给你可运行的脚本模板,手把手教你用代码批量搞定交换机基础配置。

今日文章阅读福利:《 网络工程师基本配置命令大全 》 不管心态如何变化,技术依旧是自己手里最有力的武器。私信发送暗号“配置命令”,即可获取技术之路一把好武器。

01 为什么必须用脚本?

✅ 核心价值:标准化 + 效率 + 可审计

02 技术选型:两种主流方案

方案1:Python + Netmiko(轻量灵活)

适合中小规模(<100台)无需额外服务,单机运行支持华为、H3C、Cisco等

方案2:Ansible + Network Modules(企业级)

支持幂等性、角色化、变量管理适合大规模、复杂场景需安装Ansible环境📌 本文以 Python + Netmiko 为例(新手友好)

03 实战:一键配置50台华为交换机

步骤1:准备设备清单(devices.csv)

ip,username,password,hostname,vlan10_ip 192.168.1.101,admin,Admin@123,SW-Core-01,192.168.10.1 192.168.1.102,admin,Admin@123,SW-ACC-01,192.168.10.2 192.168.1.103,admin,Admin@123,SW-ACC-02,192.168.10.3

步骤2:编写配置模板(base_config.txt)

sysname {{ hostname }} vlan batch 10 20 30 interface vlanif 10 ip address {{ vlan10_ip }} 255.255.255.0 quit aaa local-user netops password cipher Ops@2025 local-user netops service-type ssh terminal local-user netops level 3 quit user-interface vty 0 4 authentication-mode aaa protocol inbound ssh quit snmp-agent snmp-agent sys-info version v2c snmp-agent community read public snmp-agent target-host trap address udp-domain 10.10.100.10 params securityname public save y

步骤3:Python脚本(deploy_switches.py)

import csv from netmiko import ConnectHandler from jinja2 import Template import logging # 启用日志 logging.basicConfig(filename='deploy.log', level=logging.INFO) def load_devices(file): with open(file, 'r') as f: return list(csv.DictReader(f)) def render_config(template_file, data): with open(template_file) as f: tmpl = Template(f.read()) return tmpl.render(**data).splitlines() def deploy_to_device(device_info): device = { 'device_type': 'huawei', 'host': device_info['ip'], 'username': device_info['username'], 'password': device_info['password'], 'timeout': 20, } try: conn = ConnectHandler(**device) config_set = render_config('base_config.txt', device_info) output = conn.send_config_set(config_set) conn.disconnect() logging.info(f"✅ {device_info['ip']} 配置成功") print(f"✅ {device_info['ip']} OK") except Exception as e: logging.error(f"❌ {device_info['ip']} 失败: {str(e)}") print(f"❌ {device_info['ip']} ERROR: {e}") if __name__ == "__main__": devices = load_devices('devices.csv') for dev in devices: deploy_to_device(dev)

步骤4:运行 & 查看结果

pip install netmiko jinja2 python deploy_switches.py 输出:✅ 192.168.1.101 OK ✅ 192.168.1.102 OK ✅ 192.168.1.103 OK 同时生成 deploy.log 记录全过程。

04 关键技巧与注意事项

✅ 1. 使用Jinja2模板,动态注入变量

→ 避免硬编码,一台一配

✅ 2. 加异常处理和日志

→ 出错不中断,问题可追溯

✅ 3. 最后加 save 和确认回车(y)

→ 华为设备保存需交互,脚本中模拟输入

✅ 4. 先在1~2台测试,再全量执行

→ 避免批量翻车

⚠️ 5. 确保网络可达、账号权限足够

→ 建议使用专用运维账号

05 进阶:用Ansible实现(简略版)

inventory.ini[switches] sw1 ansible_host=192.168.1.101 sw2 ansible_host=192.168.1.102 [switches:vars] ansible_user=admin ansible_password=Admin@123 ansible_network_os=ce # 华为CloudEngine playbook.yml- name: Deploy base config to Huawei switches hosts: switches tasks: - name: Configure VLAN and SNMP ce_config: lines: - vlan batch 10 20 30 - snmp-agent community read public save: yes 运行:ansible-playbook -i inventory.ini playbook.yml

06 适用场景清单

✅ 新建机房批量初始化

✅ 安全合规整改(统一关Telnet、开SSH)

✅ 标准化配置推送(NTP、SNMP、日志服务器)

✅ 灾备恢复时快速重建配置

07 结语

批量配置不是“高级技能”,而是现代网工的基本素养。当你还在熬夜敲命令时,高手早已喝着咖啡看脚本自动跑完。工具不会取代网工,但会用工具的网工会取代不用工具的。今天给你的脚本,稍作修改就能用于你的生产环境。记住:自动化不是选择题,而是生存题。

原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值