网络自动化基础
网络自动化用脚本/平台替代人工 CLI 操作,提升效率与一致性,是现代网络工程师的必备技能。
为什么需要自动化
| 人工运维痛点 | 自动化收益 |
|---|---|
| 重复配置易出错 | 模板化下发,一致性高 |
| 变更窗口长 | 批量并行执行 |
| 配置审计困难 | 脚本+版本管理可追溯 |
| 故障定位慢 | 自动采集+分析 |
自动化技术演进
CLI/SSH 手工 → 脚本(Paramiko/Netmiko)→ 模型驱动(Netconf/YANG)→ 智能运维(Telemetry + AI)
环境准备
# Python 环境
python -m pip install netmiko paramikoNetmiko 示例(批量配置)
from netmiko import ConnectHandler
device = {
"device_type": "huawei",
"host": "192.168.1.254",
"username": "admin",
"password": "Huawei@123",
}
conn = ConnectHandler(**device)
output = conn.send_command("display version")
print(output)
# 下发配置
configs = [
"interface Vlanif10",
"ip address 192.168.10.1 255.255.255.0",
]
conn.send_config_set(configs)
conn.save_config()
conn.disconnect()批量执行(多设备)
from netmiko import ConnectHandler
devices = [
{"device_type": "huawei", "host": "192.168.1.1", "username": "admin", "password": "x"},
{"device_type": "huawei", "host": "192.168.1.2", "username": "admin", "password": "x"},
]
for dev in devices:
conn = ConnectHandler(**dev)
print(dev["host"], conn.send_command("display clock"))
conn.disconnect()华为设备开启 SSH(供脚本连接)
[Huawei] aaa
[Huawei-aaa] local-user admin password cipher Huawei@123
[Huawei-aaa] local-user admin privilege level 15
[Huawei-aaa] local-user admin service-type ssh
[Huawei] ssh user admin authentication-type password
[Huawei] ssh server enable
[Huawei] user-interface vty 0 4
[Huawei-ui-vty0-4] authentication-mode aaa
[Huawei-ui-vty0-4] protocol inbound ssh常用库与工具
| 工具 | 用途 |
|---|---|
| Netmiko | 多厂商 SSH CLI 自动化 |
| Paramiko | 底层 SSH 库 |
| NAPALM | 统一多厂商配置/状态 API |
| Ansible | 无代理批量配置(network 模块) |
| TextFSM | 解析 CLI 文本为结构化数据 |
| REST API | iMaster NCE 北向接口 |
安全实践
- 凭据使用环境变量/密钥管理,勿硬编码
- 脚本先在小范围灰度,加 dry-run 模式
- 变更前备份配置,变更后校验
- 记录审计日志(谁在何时改了什么)
🔗 相关笔记:06.02_Netconf与YANG 06.03_Telemetry与iMaster_NCE 99.02_eNSP实验指南