brunch

파이썬 네트워크 프로그래밍 (#8 : netmiko)

파이썬 네트워크 자동화

"netmiko"를 이용한 파이썬 네트워크 자동화

앞선 2개의 글에서 paramiko를 이용한 파이썬 네트워크 자동화에 대한 내용을 소개했습니다. paramiko는 휼륭한 ssh library로 네트워크 장비들을 ssh을 이용하여 제어할 수 있습니다. 하지만 여러 vendor의 장비를 관리하는데 어려움이 있습니다. 따라서 여러 밴더 장비들을 손싶게 관리할 수 있는 netmiko 네트워크 파이썬 library를 배우고 어떻게 동작하고 여러 장비들을 제어할 수 있는지 공부를 하겠습니다.

파이썬 네트워크 자동화


참고 사이트

https://pynet.twb-tech.com/

https://ktbyers.github.io/netmiko/#tutorialsexamplesgetting-started

https://github.com/ktbyers/netmiko/blob/master/netmiko/ssh_dispatcher.py


netmiko 설치

$ sudo pip3 install netmiko

Screen Shot 2022-08-24 at 1.04.48 PM.png

$ pip3 freeze

Screen Shot 2022-08-24 at 1.06.10 PM.png

pip3 freeze를 통해서 해당 모듈이 설치되어 있는지 확인한다.


$ python

>>> import netmiko

Screen Shot 2022-08-24 at 1.07.07 PM.png

이후에 netmiko 모듈을 import 했을 때에 정상적으로 import가 되는지 확인 합니다.


Netmiko을 이용하여 Cisco, Juniper, Arista 장비에 loopback과 Interface 설정하기

C1.loopback0 : 10.10.10.10/32

JR.loopback0 : description lo0

AR.loopback0 : 30.30.30.30/32

CR1.gi0/1 (10.10.20.1/30) - JR1.em1 (10.10.20.2/30)

CR1.gi0/2 (10.10.30.1/30) - AR1.Ethernet1 (10.10.30.2/30)

JR1.em2 (10.20.30.1/30) - AR2.Ethernet2 (10.20.30.2/30)

Screen Shot 2022-08-24 at 10.18.28 PM.png



CR1, JR1, AR1 장비 간에 연결을 진행하고, 이후에 BGP를 연동하려고 계획했으나 가지고 있는 JR1 장비에 management interface 외에 활성화가 되지 않아, JR1을 제외한 나머지 장비에 설정을 진행하겠습니다.

netmiko test lab 진행 이후에 랩 구성을 변경하여 여러가지 protocol을 테스트 할 수 있도록 하겠습니다.

netmiko 경우 cisco 장비에 대한 구성 예제가 다양하여 쉽게 netmiko를 구성할 수 있었으나 juniper, arista 경우 예제가 많지 않아 아래 설정을 하는 것에도 어려움이 있었습니다. 혹시 arista 또는 juniper에 대한 좋은 예제나 자료가 있으면 공유 부탁드립니다.


Screen Shot 2022-08-24 at 10.24.15 PM.png
Screen Shot 2022-08-24 at 10.24.45 PM.png


실행 결과

Screen Shot 2022-08-24 at 10.27.11 PM.png
Screen Shot 2022-08-24 at 10.27.38 PM.png
Screen Shot 2022-08-24 at 10.28.02 PM.png


도움글

https://github.com/ktbyers/netmiko/blob/develop/EXAMPLES.md#configuration-changes-1

https://pyneng.readthedocs.io/en/latest/book/18_ssh_telnet/netmiko.html#


마무리

netmiko 첫글인데, 생각보다 간단한 내용을 실행하는데 어려움이 있었습니다. Cisco 경우 예제가 많아, 많은 자료를 검토 및 참고가 가능하지만, Juniper 와 Arista 경우, 생각보다 자료가 많지 않았습니다. paramiko 보다 netmiko를 통해서 원하는 결과를 손쉽게 얻었지만, 익숙해지는데는 시간이 필요할 것 같습니다. 도움이 되는 글이 되길 바랍니다.


keyword
매거진의 이전글파이썬 네트워크 프로그래밍 (#7 : Paramiko)