개념 사전 · 프로그램

Netmiko

넷미코

는 네트워크 장비의 SSH CLI 자동화를 돕는 라이브러리이다. 장비별 로그인·프롬프트·페이지 출력·설정 모드 차이를 추상화하여 원격 명령 전달과 결과 수집을 구성한다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 장비 종류에 맞는 연결 드라이버와 CLI 초기화를 선택한다.
  • 조회 명령과 설정 모드 작업의 대화 흐름을 처리한다.
  • 프롬프트·시간 제한·출력 정규화를 자동화 코드에 연결한다.

02어떤 순서로 동작하나

  1. 장비 유형 선택

    대상 장비와 device_type·인증·호스트 신뢰 조건을 설정한다.

  2. 세션 초기화

    SSH 연결 뒤 가 프롬프트와 필요한 세션 상태를 준비한다.

  3. 명령 수행

    조회는 등으로, 설정 변경은 의도한 설정 모드 절차로 전달한다.

  4. 결과 판정

    반환 문자열· 메시지·기대 상태를 검사하고 종료한다. 함수가 반환됐다는 사실만으로 설정 적용 성공을 확정하지 않는다.

03먼저 알아둘 용어와 구성요소

네트워크 OS CLI는 명령 실행과 달리 사용자·특권·설정 모드, 프롬프트, 화면 페이지 분할이 있다.
는 장비 종류별로 이런 터미널 동작을 처리하는 연결 기능을 제공한다.
는 조회 명령의 출력과 종료 프롬프트를 기다리고 send_config_set은 설정 모드에서 여러 명령을 적용하는 용도다.
두 호출을 같은 단순 문자열 전송으로 취급하면 모드와 실패 검출을 놓칠 수 있다.
운영 구조에서는 ssh_strict와 호스트키 자료 등 연결 신뢰 정책을 명시한다.
명령이 반환됐어도 출력에 Invalid input 같은 가 있을 수 있어 결과를 파싱하고 실제 running 상태를 다시 조회한다. running-config 변경과 startup-config 저장도 별도 작업이며 장비·플랫폼에 맞는 저장 절차가 필요하다.
LEARN THROUGH PRACTICE

장비 자동화의 메뉴·원격 명령·결과 파일을 한 흐름으로 읽기

사용자 입력을 명령으로 바꾸고 결과를 저장하는 자동화 구조에서 실제 성공의 근거를 구별한다.

실습 구성과 전제

  • 흐름도, 장비 설정 메뉴, Jupyter 결과 폴더는 서로 다른 실행 화면이다. 하나의 요청이 모두를 거쳤다고 단정하지 않는다.
  • 실습 장비와 검증한 SSH 호스트 키, 최소 권한 인증 키가 준비된 환경을 가정한다. 아래 코드는 조회 전용으로 재구성한다.
  1. 대상 선택과 접속·작업 함수를 분리한다

    • 흐름도는 메뉴에서 장비 종류와 대상을 선택한 뒤 해당 접속 함수와 작업으로 분기한다. 사용자 입력이 그대로 임의 셸 명령으로 흘러가도록 만들지 않고 허용 작업으로 변환한다.
    • 방식과 대화형 네트워크 CLI는 명령 완료를 판단하는 방법이 다르다. 장비 종류에 따라 채널 또는 의 프롬프트 처리를 선택한다.
    우분투 설정 프로그램 흐름 · 함수 흐름도원본 크기로 보기 ↗
    • 메인 메뉴에서 계정·장비 선택으로 분기하고 Cisco·Rocky·Ubuntu 등 대상 종류가 나뉜다.
    • connect 함수와 설정 백업·invoke_shell 같은 작업 연결이 표현되어 있다.
    확인 기준

    대상·인증·작업·저장 책임을 별도 함수로 나누고, 실패가 어느 단계에서 났는지 결과에 남긴다.

  2. 설정 문장 생성과 장비 적용을 구별한다

    • 메뉴 사진은 입력을 받아 Cisco 설정 문장으로 바꾸고 장비 프롬프트와 완료 메시지를 출력한다. 입력값 검증과 명령 구성의 연결을 보여 준다.
    • 프로그램이 찍은 적용 완료 문자열은 코드에서 정한 표시다. 응답, 실행 후 구성 조회, 실제 할당까지 확인해야 목적한 동작을 입증할 수 있다.
    네트워크 장비 자동 제어 · 파일 위치, 이름, 형식 지정 (2)원본 크기로 보기 ↗
    • 사용자가 DHCP 관련 값을 입력하는 메뉴와 생성된 설정 문장이 보인다.
    • 장비 CLI 프롬프트와 프로그램의 적용 완료 메시지가 이어지지만 실제 클라이언트 임대 결과는 이 화면에 없다.
    확인 기준

    설정 성공 판정을 마지막 print문에 맡기지 않는다. 읽기 전용 사후 조회를 작업별로 정해 기대 상태와 비교한다.

  3. SSH 조회의 출력과 종료 상태를 함께 수집한다

    • 재구성 코드는 사전에 등록된 호스트 키를 확인하고 작은 조회 명령을 실행한다. stdout·stderr·종료 상태를 별도 값으로 보관해 명령 실패를 정상 자료와 구분한다.
    • 큰 출력이나 대화형 세션은 채널 버퍼와 완료 판정 방식이 다르므로 아래 짧은 조회 예시를 그대로 확장하지 않는다. 접속 실패와 실행 후 연결 끊김도 별도 상태로 남겨야 한다.
    from pathlib import Path
    import paramiko
    
    client = paramiko.SSHClient()
    client.load_system_host_keys()
    try:
        client.connect("192.0.2.30", username="labuser",
                       key_filename=str(Path.home() / ".ssh" / "lab_ed25519"),
                       timeout=5, auth_timeout=5, banner_timeout=5)
        stdin, stdout, stderr = client.exec_command("ip -brief address", timeout=10)
        out = stdout.read().decode("utf-8", errors="replace")
        err = stderr.read().decode("utf-8", errors="replace")
        rc = stdout.channel.recv_exit_status()
        print({"returncode": rc, "stdout": out, "stderr": err})
    finally:
        client.close()

    준비된 키·known_hosts를 사용하는 짧은 조회 재구성 예시다. 출력이 큰 작업에는 stdout·stderr를 함께 계속 소비하는 별도 수집기가 필요하다.

    확인 기준

    rc=0은 해당 명령이 보고한 성공이다. 기대한 주소·인터페이스가 출력되는지까지 검증하고, 연결 끊김 뒤 결과가 불명확하면 설정 작업을 무조건 재시도하지 않는다.

  4. 결과 파일은 대상·시각·작업을 식별하게 저장한다

    • Jupyter 화면에는 OS별 폴더 아래 ip_a·ip_r 같은 조회 결과 파일이 보인다. 파일이 만들어진 사실과 파일 내용이 유효한 결과라는 사실은 다르다.
    • 대상 식별자, 수집 시각, 실행 명령, 종료 상태를 함께 저장하면 나중에 주소와 경로를 비교할 때 어떤 시스템의 관찰인지 복원할 수 있다.
    파이썬 SSH 자동화 · Jupyter ip_a (4)원본 크기로 보기 ↗
    • Jupyter의 files/os/rocky/ 경로에 결과 파일들이 보인다.
    • ip_a와 ip_r처럼 조회 작업을 구별하는 파일명이 나열된다.
    확인 기준

    빈 파일·오류 문자열·다른 장비 결과 덮어쓰기를 구분한다. 공개 문서로 옮길 때 자격 정보와 민감 설정은 제외한다.

실습에서 확인한 동작 원리

  • 자동화는 명령 전송만이 아니라 입력 검증·접속 신뢰·실행 결과 판정·근거 저장까지 연결하는 작업이다.
  • CLI 프롬프트나 완료 문구 대신 종료 상태와 사후 조회로 실제 적용 결과를 확인한다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

  • show 명령의 출력 수집과 config 모드에 들어가 여러 설정을 바꾸는 작업은 종료 프롬프트와 성공 조건이 다르다.
  • 장비가 % Invalid input 같은 문자열을 돌려도 통신 라이브러리는 정상 문자열로 반환할 수 있어 결과 내용을 검사해야 한다.
  • 장비 목록 중 일부가 실패하면 이미 성공한 장비까지 일괄 재적용하기 전에 대상별 변경 상태와 재실행의 멱등성을 판단한다.

05혼동하기 쉬운 점과 확인 기준

  • PTY를 요청한 세션은 stderr가 별도 스트림으로 보이지 않거나 터미널 제어 문자가 섞일 수 있다. 일반 출력 파서와 대화형 장비 CLI 파서를 같은 규칙으로 처리하지 않는다.
  • 대상별 성공·실패와 이전 상태를 기록하고 다시 실행할 때 필요한 작업만 적용할 수 있어야 한다.
  • 파일 끝에 설정 줄을 계속 붙이는 스크립트는 반복할수록 중복되지만 현재 설정과 원하는 값을 비교해 바꾸는 작업은 수렴할 수 있다. 자동화의 속도보다 상태 전환의 정의가 먼저다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.