Home » Network Automation Python: Netmiko, Paramiko, pyATS, TextFSM และ REST API Integration
Network Automation Python: Netmiko, Paramiko, pyATS, TextFSM และ REST API Integration
Network Automation Python: Netmiko, Paramiko, pyATS, TextFSM และ REST API Integration
Network Automation Python ใช้ Python เป็นภาษาหลักในการ automate network tasks Netmiko ให้ simplified SSH connections ไปยัง network devices, Paramiko เป็น low-level SSH library ที่ Netmiko สร้างอยู่บน, pyATS เป็น Cisco test automation framework, TextFSM parse unstructured CLI output เป็น structured data และ REST API Integration เชื่อมต่อกับ modern network platforms ผ่าน API
Network engineers ใช้เวลา 80% กับ repetitive tasks: config changes, compliance checks, backup configs, inventory updates Python automation ลดเวลาจากชั่วโมงเหลือวินาที: script ทำ config change บน 100 devices ใน 5 นาที แทนที่จะ SSH ทีละเครื่อง Python เป็น de facto language สำหรับ network automation เพราะ extensive library support
Python Network Automation Libraries
| Library |
Level |
Use Case |
| Paramiko |
Low-level SSH |
Raw SSH connections, SCP/SFTP file transfer |
| Netmiko |
High-level SSH |
Multi-vendor SSH (send commands, config changes) |
| NAPALM |
Abstraction |
Unified API สำหรับ multi-vendor (get/set config, validation) |
| Nornir |
Framework |
Python automation framework (inventory, concurrent tasks) |
| pyATS/Genie |
Test Framework |
Network testing, parsing, state comparison |
| Scrapli |
High-level SSH |
Modern alternative to Netmiko (async support, faster) |
| Requests |
HTTP |
REST API calls (RESTCONF, vendor APIs) |
| ncclient |
NETCONF |
NETCONF protocol connections (XML-based config) |
Netmiko
| Feature |
รายละเอียด |
| คืออะไร |
Multi-vendor SSH library — simplified SSH สำหรับ network devices (built on Paramiko) |
| Vendors |
Cisco IOS/NX-OS/ASA, Arista EOS, Juniper Junos, HP, Fortinet, Palo Alto, 50+ device types |
| send_command() |
Send show command → return output as string |
| send_config_set() |
Send list of config commands (auto enter config mode + exit) |
| send_config_from_file() |
Send config commands from file |
| TextFSM Integration |
use_textfsm=True → auto-parse output to structured data |
| Session Log |
session_log parameter → log ทุก command/output for audit |
Paramiko
| Feature |
รายละเอียด |
| คืออะไร |
Pure-Python SSH2 protocol library (low-level SSH implementation) |
| SSHClient |
High-level SSH client (connect, exec_command, invoke_shell) |
| exec_command() |
Execute single command → return stdin, stdout, stderr |
| invoke_shell() |
Interactive shell session (สำหรับ devices ที่ต้อง interactive prompts) |
| SFTPClient |
SFTP file transfer over SSH (upload/download files) |
| vs Netmiko |
Paramiko = raw SSH (ต้อง handle prompts, timing เอง) | Netmiko = abstracted (auto-handle) |
| Use When |
Need low-level control, SCP/SFTP, custom SSH handling, non-network devices |
pyATS and Genie
| Feature |
รายละเอียด |
| pyATS |
Cisco Python Automated Test System — test framework สำหรับ network testing |
| Genie |
Library บน pyATS — parsers, models, triggers สำหรับ network devices |
| Testbed |
YAML file ที่ define devices, connections, credentials (inventory) |
| Parsers |
2000+ parsers สำหรับ show commands → structured Python dict/object |
| Learn |
device.learn(‘ospf’) → learn complete OSPF state as structured object |
| Diff |
Compare two snapshots → show what changed (pre/post change validation) |
| Use Case |
Pre/post change validation, compliance testing, network state comparison |
TextFSM
| Feature |
รายละเอียด |
| คืออะไร |
Template-based text parser — parse unstructured CLI output → structured data |
| Templates |
NTC Templates: 1000+ pre-built templates สำหรับ show commands ของทุก vendor |
| How |
Define Value (columns) + rules (regex) ใน template → apply to CLI output → get list of dicts |
| Netmiko |
use_textfsm=True ใน send_command() → auto-parse with NTC templates |
| vs Regex |
TextFSM = reusable templates, easier to maintain | Regex = one-off, hard to read |
| Alternative |
TTP (Template Text Parser) — more Pythonic syntax, similar concept |
REST API Integration
| Platform |
API |
Python Library |
| Cisco DNA Center |
REST API |
requests + dnacentersdk |
| Cisco ACI |
REST API (APIC) |
requests + acitoolkit |
| Cisco Meraki |
REST API |
requests + meraki (official SDK) |
| Palo Alto |
REST API + XML API |
requests + pan-os-python |
| Fortinet |
REST API |
requests + pyfortiapi |
| RESTCONF |
REST + YANG models |
requests (JSON/XML payloads) |
| NETCONF |
XML + YANG models |
ncclient |
Automation Best Practices
| Practice |
Why |
| Start Small |
Automate simple tasks first (backup, show commands) → build confidence |
| Idempotent |
Script ทำซ้ำกี่ครั้ง ผลลัพธ์เหมือนเดิม (check before change) |
| Error Handling |
try/except ทุก connection/command → log errors → continue ไม่ crash |
| Dry Run |
Preview changes ก่อน apply (check mode, diff) |
| Logging |
Log ทุก action + output → audit trail + troubleshooting |
| Version Control |
Scripts + configs ใน Git → track changes, review, rollback |
| Credentials |
ใช้ environment variables หรือ vault — ไม่ hardcode passwords |
| Concurrent |
ใช้ threading/multiprocessing สำหรับ many devices → ลดเวลา 10× |
ทิ้งท้าย: Python = The Language of Network Automation
Network Automation Python Libraries: Paramiko (low-level SSH), Netmiko (high-level SSH, most popular), NAPALM (multi-vendor abstraction) Netmiko: 50+ device types, send_command, send_config_set, TextFSM integration Paramiko: raw SSH, SCP/SFTP, use when need low-level control pyATS/Genie: Cisco test framework, 2000+ parsers, learn/diff for pre/post validation TextFSM: template-based parsing (NTC Templates), unstructured → structured data REST API: requests library + vendor SDKs (DNA Center, Meraki, ACI, Palo Alto, RESTCONF) Best Practices: start small, idempotent, error handling, dry run, logging, Git, no hardcoded credentials Key: Python automation = 100 devices in 5 minutes instead of hours of manual CLI work
อ่านเพิ่มเติมเกี่ยวกับ GitOps Networking Ansible Terraform Nornir และ Network Monitoring SNMP NetFlow Telemetry ที่ siamlancard.com หรือจาก icafeforex.com และ siam2r.com