brunch

You can make anything
by writing

C.S.Lewis

파이썬 네트워크 프로그래밍 (#3 : 텔넷 장비 접속)

파이썬 네트워크 자동화

파이썬 네트워크 자동화

Telnet을 이용한 파이썬 네트워크 자동화

앞선 2개의 글을 통해서 네트워크 자동화 환경을 마무리했습니다.

이제 파이썬 스크립트를 이용하여 테스트 랩 장비들에 설정 및 정보 확인을 할 수 있는 스크립트를 만들도록 하겠습니다.


Telnet 통해서 Cisco 라우터 Loopback 설정

파이썬 Docs에서 제공하는 "telnet example"을 이용하여 Cisco 장비에 아래 Loopback을 설정을 해보겠습니다.

https://docs.python.org/3/library/telnetlib.html

Loopback 10 : 10.10.10.10

Loopback 20 : 20.20.20.20

Loopback 30 : 30.30.30.30

sh ip int bridge 설정된 Loopback 인터페이스 확인


telnet python script 살펴보기.

import getpass : "getpass" 모듈을 import 한다.

import telnetlib : "telnetlib" 모듈을 import 한다.

password = getpass.getpass() : "getpass" 모듈에 "getpass" 함수를 이용해 password를 받고, 해당 정보를 password 변수에 저장한다.

tn = telnetlib.Telnet(HOST) : "telnetlib" 모듈의 "Telnet"에 Host 인자를 넣고, 그 값을 tn 변수에 저당한다.

tn.read_until(b"login: ") : login ID 입력정보를 기다린다.

tn.write(user.encode('ascii') : User ID를 아스키코드로 인코드 하여 텔넷 가상 터미널로 보낸다.

tn.read_until(b"Password: ") : Password를  입력을 기다린다.

tn.write(password.encode('ascii') + b"\n") : Password를 아스크 코드로 입력하여 텔넷 가상 터미널로 보낸다.

tn.write(b"ls\n") : "ls" 입력 값을 보낸다.

tn.write(b"exit\n") : "exit" 입력 값을 보낸다.

print(tn.read_all().decode('ascii')) : 세션에 실행된 모든 명령어를 보여주고, 아스키코드로 디코드 하여 사용자 화면에 출력한다.



이제 위 예제 스크립트를 이용하여 Cisco 장비에 Loopback을 설정하고, 설정된 정보를 show ip interface brief로 내용을 확인해보자.



Cisco에서 해당 스크립트가 제대로 동작하기 위해서 몇 가지 수정이 필요했습니다. 변경 내용에 대해서는 위 스크크립트를 참고 하시길 바랍니다.


아래는 스크립트를 실행 결과를 보여준다.

loopback 10,20,30을 설정 후에 write memory 하며, 이후 sh ip int brief 명령어를 실행한다.


실행 결과

loopback 10,20,30을 설정 후에 write memory 하며, 이후 sh ip int brief 명령어를 실행한다.


마무리

Ubuntu 서버에서 파이썬 스크립트를 이용하여 Cisco Router에 Loopback을 설정하며, 관련 정보를 원격으로 확인했습니다. 텔넷 경우 보안으로 실제 네트워크에서 사용이 안되지만, 테스트 랩에서 telnet을 통해서 원격 장비를 설정하는 방법에 대해서 알아 두면 향후 파이썬으로 네트워크 장비를 설정하는데 도움이 될 것이라고 생각됩니다.


매거진의 이전글 파이썬 네트워크 프로그래밍 (#2 : 장비 기본 설정)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari