Scrapli - 빠른 네트워크 스크린 스크래핑

21 조회 2025-11-17 오픈소스 도구
GitHub 문서

Scrapli - 고성능 네트워크 스크린 스크래핑

개요

Scrapli는 Carl Montanari가 개발한 Python SSH/Telnet 라이브러리로, 성능과 안정성에 중점을 둔 현대적인 네트워크 자동화 도구입니다.

성능 비교 (100대 장비, show version)

Netmiko: 180초
Scrapli: 60초  (3배 빠름)
Paramiko: 240초

기본 사용법

설치

pip install scrapli

간단한 연결

from scrapli.driver.core import IOSXEDriver

device = {
    "host": "192.168.1.1",
    "auth_username": "admin",
    "auth_password": "password",
    "auth_strict_key": False,
}

with IOSXEDriver(**device) as conn:
    response = conn.send_command("show version")
    print(response.result)

지원 플랫폼

Cisco

  • IOSXEDriver - IOS-XE
  • NXOSDriver - NX-OS
  • IOSXRDriver - IOS-XR

Juniper

  • JunosDriver

Arista

  • EOSDriver

고급 기능

1. 구조화된 데이터 (TextFSM)

response = conn.send_command("show ip interface brief")
structured_result = response.textfsm_parse_output()

for interface in structured_result:
    print(f"{interface['intf']}: {interface['ipaddr']}")

2. 비동기 지원

import asyncio
from scrapli.driver.core import AsyncIOSXEDriver

async def gather_facts(host):
    async with AsyncIOSXEDriver(**device) as conn:
        version = await conn.send_command("show version")
        return version.result

asyncio.run(gather_facts("192.168.1.1"))

장점

✓ 매우 빠른 성능 (Netmiko 대비 2-3배) ✓ 완전한 타입 힌팅 ✓ 비동기 지원 (AsyncIO) ✓ 다양한 전송 옵션

단점

✗ Netmiko보다 작은 커뮤니티 ✗ 비교적 신생 프로젝트

링크

  • GitHub: https://github.com/carlmontanari/scrapli
  • 문서: https://carlmontanari.github.io/scrapli/