본문 바로가기

네트워크/네트워크 자동화

[네트워크 자동화] - Netmiko 복수 장비 접근 방법

728x90

● Netmiko 복수 장비 접근 방법 - Dictionary를 이용한 접근

  - 장비에 접근하기 위한 정보들을 Dictionary 형태의 데이터로 정의하고 순차적으로 불러와서 개별 장비에 접근 할 수 있습니다. 다만, 접속 할 장비의 수량이 증가하게 되면 Dictionary 데이터가 너무 길어져 코드가 길어지는 단점이 있습니다. 

  - 복수의 Dictionary 데이터를 저장하기 위해 List Type안에 Dictionary 데이터를 삽입하는 구조를 가져 갑니다. 

from netmiko import SSHDetect, ConnectHandler

devices = [
    {
    "device_type": "extreme_exos",
    "host": "IP 주소",
    "username": "계정",
    "password": "비밀번호",
    "secret": "Enable 비밀번호",
    "verbose" : "True"
    },
           
    {
    "device_type": "extreme_exos",
    "host": "IP 주소",
    "username": "계정",
    "password": "비밀번호",
    "secret": "Enable 비밀번호",
    "verbose" : "True"
    }
    ]

for device in devices:
    with ConnectHandler(**device) as net_connect:
        print(net_connect.find_prompt())

 

 

 

● Netmiko 복수 장비 접근 방법 - JSON을 이용한 접근 

  - 장비에 접근하기 위한 정보들을 JSON 형태의 데이터로 정의하고 순차적으로 불러와서 개별 장비에 접근 할 수 있습니다. 접속 할 장비의 수량이 증가하여도 외부 JSON 파일만 수정하면 되기 때문에 Dictionary를 메인 코드에 기록하는 것 보다 편리 합니다. 

# Python Code

import json
from netmiko import extreme

def Connect_Device(device):
    with extreme.ExtremeExosSSH(**device) as net_connect:
        hostname = net_connect.find_prompt()
        print(hostname)

if __name__ == "__main__":
    with open("JSON 파일 위치"), mode='r') as json_file:
        Switchs = json.load(json_file)
            
    for _, devices in Switchs.items():
        for device in devices:
            Connect_Device(device)

  - JSON 파일은 기본적으로 Dictionary 형태의 데이터와 형태가 동일 합니다. 그래서 Python의 Dictionary Data Type을 JSON으로 변환할 수 있고, JSON Data Type을 Python Dictionary Data Type으로 변환 할 수 있습니다. 

# JSON 파일
{
    "DEVICES" : [
        {
            "device_type": "extreme_exos",
            "ip": "IP 주소",
            "username": "계정",
            "password": "비밀번호",
            "secret": "Enable 비밀번호",
            "verbose" : "True"
        },
        
        {
            "device_type": "extreme_exos",
            "ip": "IP 주소",
            "username": "계정",
            "password": "비밀번호",
            "secret": "Enable 비밀번호",
            "verbose" : "True"
        },

        {
            "device_type": "extreme_exos",
            "ip": "IP 주소",
            "username": "계정",
            "password": "비밀번호",
            "secret": "Enable 비밀번호",
            "verbose" : "True"
        }
    ]
}
728x90