号主:老杨丨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年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
6350

被折叠的 条评论
为什么被折叠?



