رفتن به محتوا
بازگشت به وبلاگ
خودکارسازی

خودکارسازی شبکه Python با Netmiko و NAPALM

نوشتن اسکریپت‌های Python برای خودکارسازی پشتیبان‌گیری پیکربندی، تغییرات انبوه و Audit شبکه با Netmiko و NAPALM.

خرداد ۱۴۰۴
۱۷ دقیقه مطالعه

خودکارسازی شبکه Python با Netmiko و NAPALM

Python کنترل برنامه‌نویسی کامل بر روی تجهیزات شبکه می‌دهد. Netmiko اتصالات SSH را مدیریت می‌کند؛ NAPALM یک API فروشنده-خنثی فراهم می‌کند.

نصب

BASH
pip install netmiko napalm

Netmiko: اتصال پایه

PYTHON
from netmiko import ConnectHandler

device = {
    'device_type': 'mikrotik_routeros',
    'host': '192.168.1.1',
    'username': 'admin',
    'password': 'password',
}

with ConnectHandler(**device) as conn:
    output = conn.send_command('/ip address print')
    print(output)

پشتیبان‌گیری انبوه از پیکربندی

PYTHON
import json
from datetime import date
from netmiko import ConnectHandler
from pathlib import Path

devices = json.load(open('devices.json'))
backup_dir = Path(f"backups/{date.today()}")
backup_dir.mkdir(parents=True, exist_ok=True)

for device in devices:
    try:
        with ConnectHandler(**device) as conn:
            config = conn.send_command('/export')
            Path(backup_dir / f"{device['host']}.txt").write_text(config)
            print(f"✓ {device['host']} پشتیبان‌گیری شد")
    except Exception as e:
        print(f"✗ {device['host']}: {e}")

NAPALM: API فروشنده-خنثی

PYTHON
from napalm import get_network_driver

driver = get_network_driver('ios')
device = driver(hostname='192.168.1.10', username='cisco', password='password')
device.open()

facts = device.get_facts()
print(f"Hostname: {facts['hostname']}")

device.load_merge_candidate(filename='changes.txt')
print(device.compare_config())
device.commit_config()
device.close()