OnePK 예제
지난 포스팅에 이어서 Python을 사용한 OnePK 예제를 다뤄봅니다.
간략한 예제를 통해서, OnePK를 어떻게 사용할 수 있는지 알아보겠습니다.
○ OnePK 두 번째 예제
- Network Element의 Interface 정보를 가져와서 출력해보는 예제입니다
- Ethernet Type의 Interface 정보를 가져오고, 해당 Interface의 Description을 출력합니다
◆ 실행결과
◆ 소스코드
- 기본 코드는 지난 포스팅인 Python for Networker Part 14(OnePK3)을 참고해주시면 됩니다.
- Interface를 정보를 가져오기 위해서 OnePK에서 제공하는 Package중에, Interface라는 Package를 사용합니다.
- 여기서는 NetworkInterface와 InterfaceFilter라는 Class를 사용합니다.
- 현재 Element(Network Device)의 Interface 정보를 가져오기 위해서는 get_interface_list 메서드를 사용하게 됩니다.
- get_interface_list 메서드를 사용하기 위해서는 InterfaceFilter를 지정해줘야 합니다
InterfaceFilter를 지정하기 위해서, InterfaceFilter에 대한 객체를 생성하는 데
InterfaceFilter의 객체 생성 시에는 NetworkInterface의 InterfaceTypes을 선택해야 합니다. (Default는 ONEP_IF_TYPE_ANY)
- 코드 상에서 보면, InterfaceTypes를 사용하기 위해서 NetworkInterface Class의 InterfaceTypes라는 enum 멤버를
intType이라는 변수에 할당하고, intType에서 Ethernet Type을 지정해서, intfilter라는 InterfaceFilter 객체를 생성합니다
intfilter를 이용해서 원하는 Interface 리스트 정보를 가져옵니다.
- LIST형태로 리턴받은 NetworkInterface에서 하나씩 객체를 가져와서 Interface이름과 description을 출력한다.
- descritpion의 경우에는 get_config() 메서드를 사용하여, InterfaceConfig 를 리턴받아서, InterfaceConfig의 메서드를 사용한다.
○ OnePK 두 번째 예제 변형-1
- 위에서 출력한 Interface 정보를 보면, 인터페이스가 순번대로 반환되지 않기 때문에 0번 인터페이스부터 7번까지 차례대로
출력되지 않는다.
- 이를 해결하기 위해서 다음과 같이 코드를 한 줄 삽입하여 정렬을 하게 되면 아래의 두번째 예제 변형의 결과값처럼 차례대로
인터페이스 정보를 출력할 수 있다.
sortInt = sorted(myInt,key=lambda intf: intf.name) |
◆ 실행결과
○ OnPK 두 번째 예제 변형 -2
- Description 이외에 추가적으로 필요한 정보는 OnePK 3번째 시간에서 얘기하였던, OnePK API에서 필요한 값을 찾아서,
얼마든지 추가하여 정보를 알아낼 수 있다. 다음은 Interface의 상태가 Up/Down인지 확인한 내용까지 출력하였다.
◆ 실행결과
○ OnePK 세 번째 예제
- OnePK 두 번째 예제처럼, Interface 정보를 가져올 수도 있지만, 실제 설정을 할 수 도 있다.
- 다음은 Interface의 Description 정보를 변경한 간단한 예제이다.
- 위 코드의 실형결과를 보면, G0/6의 Interface의 Descritpion이 없다가 ex3.py를 실행하였을 때 설정이 되는 것을 확인하고
다시 전체 인터페이스 정보를 출력해보면 G0/6에 정상적으로 Descritpion이 바뀐 것을 확인할 수 있다.
◆ 소스코드
※ 현재 포스팅된 Ex3의 예제는 결과값이 Sort를 다르게 써서, 조금 다릅니다. 변경 코드는 저녁에 이미지 교체 예정입니다
이미지 교체 후에는 본 안내 메시지는 삭제할 예정입니다
- NetwortInterface List 중에서 6번째(Index는 0부터 시작)의 Description을 set_description 메서드를 사용하여 변경합니다.
- 변경 전/후로 Descritpion을 출력해서 결과를 확인합니다
◆ 이번 포스팅에서는 OnePK 2,3번째의 예제를 통해서 Network Element의 Interface에 대한 정보를 확인 및 설정하는 방법을
알아 보았습니다. 2,3번 모두 기본 예제의 연장선상에 있으며 앞으로 다룰 예제들도 비슷할 것입니다
결국 핵심은 예제가 아니라, 예제를 바탕으로 OnePK에서 제공하는 API를 잘 활용하는 방법과 아이디어가 될 것 같습니다.