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/