이번 포스팅도 Python으로 만들어 보는 예제입니다. 마찬가지로 Cisco Nexus 5548 기준입니다.
하지만, 현재 만드는 예제가 모두 기본 CLI명령을 입력하는 부분에서만 Cisco 패키지를 사용하기 때문에
간단한(?) 변형을 통해 다른 곳에도 활용이 가능합니다.
(물론 출력된 문자열이 Nexus 기준에서 가공하여 만든 예제라 문자열 가공을 각 상황에 맞게 일부 변형이 필요합니다)
이번 예제는 특정 interface의 사용량을 원하는 횟수만큼, 원하는 시간 간격으로 화면에 출력해주는 예제입니다.
* Github에서 보기
uInt.py : https://github.com/NetworkZIGI/Python_for_Network/blob/master/uInt.py
uIntmod : https://github.com/NetworkZIGI/Python_for_Network/blob/master/uIntmod.py
uInt.py |
__author__ = 'Network ZIGI' import cisco
for cnt in range(1,int(args.repeat)+1): print '==========================================================================='
def getInterfacerRate():
parser = ArgumentParser('usingInt') |
그리고 위의 코드를 아래와 같이 실행해봅니다.
필요한 매개변수는
1. 사용량을 확인할 인터페이스 2. 반복할 횟수 3. 체크할 시간 간격
uInt.py - Cli 모드 실행 결과 |
4F_DMZ_NEXUS_A_1# python uInt.py po1 5 2 |
원하는 대로 결과값이 나온 것 같습니다!!
하지만... 절망.. Cli모드에서 실행을 하게되면 모든 코드가 종료된 이후에 결과가 나오게 됩니다.
이 부분을 실시간으로 나오게 하는게 있는지 확인을 오늘 이래저래.. 구글링을 해 보았으나..
없는 듯 싶습니다. (만약 있다면 알려주세요!!!)
그래서 어찌할까.. 하다가... Python Shell 모드에서 실행하도록 변형해봅니다.
위에서 만든 코드를 거의 그대로 가져다 쓸 수 있도록 메인 실행 부분을 함수로 변형하고 실행 시의 매개변수를
해당 함수를 호출 할 때의 매개변수로 대체하는 것 이외에는 달라지는 부분은 없습니다.
uIntmod.py |
# -*- coding: utf-8 -*- import cisco def CheckInterfaceRate(args): for cnt in range(1,args['repeat']+1): (cnt,result[0][4], result[0][6],result[1][4],result[1][6],result[0][0],result[0][1]) print '===========================================================================' (max(inBitList), max(inPacketList),max(outBitList), max(outPacketList))
def getInterfaceRate(Intinfo): |
모듈로 만들었으니.. 이제 위의 모듈을 Shell모드에서 import하여 실행해봅니다.
uIntmod : Python Shell Mode에서 실행하기 |
NX-OS# python |
Shell 모드에서는 실행할 때, 만든 모듈을 Import하고 메서드를 이용해서 모듈의 기능을 사용합니다.
자 이제 실시간으로 한 줄씩.. 원하는 시간간격으로 Interface의 사용량을 확인할 수 있게 되었습니다.