Last Updated : 2014.07.02
Network 장비에서 Python을 활용한 부분에 간단히 정리를 해보려고 합니다.
우선 처음 진행 부분은 현재 실제 테스트가 가능한 Nexus 7000 / 5000으로 먼저 간단히 시작합니다.
물론 완전 초기 부분이라서, 아마도 잘못된 부분 등에 대해서는 업데이트가 지속적으로 필요할 것 같습니다.
그리고 Nexus에서는 9000 / 3000 시리즈 기반으로
Python 활용도가 더 높은 것으로 알고 있지만..(잘못 알고 있을수도? ^^)
현재 테스트가 가능한 부분이 Nexus 7000과 5000이라 이것으로 시작하며, 추후에 다른 테스트 장비(VM포함)로..
추가적인 포스팅을 진행할까합니다.
Cisco Nexus 7000 Python 특징
• Nexus 7K에서는 Python 2.7.2의 Interactive / noninteractive(script)에 대한 모드를 모두 지원합니다.
• NX-OS 6.2(8) 부터는 JavaScript Object Notation(JSON)과 logging module을 지원합니다.
Cisco Nexus 5000 Python 특징
• Nexus 5K에서는 Python 2.7.2의 모든 Feature를 사용할 수 있다.
• Python Script를 이용하여 다음과 같은 기능을 구현할 수 있다.
- Swtich Bootup 시에 Configuration을 확인하는 Script 실행
- Configuration 백업
- Monitoring 과 Buffer 이용량에 따라서, 사전에 혼잡 관리가 가능
- 일정 시간 간격으로 작업을 수행
- 프로그래밍 방식으로 Switch의 CLI 명령을 수행하고 다양한 업무에 활용 가능
Third Party Pure Python Packages
•Nexus에서 Third Party의 Python Package를 다음과 같은 방법으로 설치하고 사용할 수 있다.
예) ZIGI.tgz 를 서버로부터 복사하여 설치하는 경우.
Step 1. 다음의 명령으로 tar file을 Secure Copy 한다.
copy scp://user@server/path/to/ZIGI.tgz bootflash:ZIGI.tgz vrf management
Step 2. Packge의 압축을 해제
tar extract bootflash:ZIGI.tgz
Step 3. 압축이 풀린 Packge를 bootflash로 옮긴다
move bootflash:ZIGI/* bootflash:
Step 4. Packge를 Install 한다.
python setup.py install
Step 5. bootflash에 복사된 파일을 제거한다.
Step 6. Python Mode에서 해당 Packge를 사용한다.
NX-OS# python
>>> import ZIGI
Python Mode 접근
NX-OS# python
Python 2.7.2 (default, Nov 27 2012, 17:50:33)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Loaded cisco NxOS lib!
>>> exit()
NX-OS#
Python 모드에서 Cli 명령
API |
내 용 |
1. NX-OS# >>> cli("명령어") |
Python Mode에서 Nexus의 CLI 명령어를 실행하고 Raw 결과를 리턴받게 됨. ‘;’를 이용하여 다수의 명령어를 한 줄에 실행 가능 ※ 제어/특수 문자도 함께 출력. 이는 ‘\n’과 값도 함께 출력된다는 것을 의미하며, 이는 가독성을 떨어지므로, clip() 명령을 사용하는 것이 보다 가독성에 좋다 |
2. NX-OS# >>> clid(“명령어”) dictionary= cli(“명령어”) |
XML을 지원하는 CLI 명령어로 결과를 Dictionary 형식으로 리턴 받게 됨. |
3. NX-OS#>>> Clip(“명령어”) |
CLI 명령어에 대한 결과를 표준 Output으로 출력을 하며, 별도의 리턴 값은 없다. ※ clip(“명령어”) 와 r = cli(“명령어”) , print r 은 동일한 역할을 한다. |
※ Nexus 7000 기준이며, Nexus 5000에서는 cli만 지원이 됩니다.
Python Mode / CLI Mode 관련
•Python Mode에서 Cli 명령을 사용하여 Switch Mode를 변경하는 경우에, Python Mode를 벗어나게 되면 변경된 Switch의
Mode가 유지되지는 않고, Python Mode로 들어올 때의 기존 Mode로 가게 된다.
•Python Mode에서 선언된 Data는 해당 Python Shell에서만 유효하며, Shell을 나간 후에 다시 들어오게 되면 사용 할 수 없게 된다.
EX-1 |
EX - 2 |
NX-OS# python NX-OS# >>> cli("conf t") NX-OS(config)# >>> cli(“int e1/1”) NX-OS(config-if)# >>> exit NX-OS# |
NX-OS# python NX-OS# >>> ZIGI = “JaeSung” NX-OS# >>> print ZIGI JaeSung NX-OS# >>> exit NX-OS# python NX-OS>>> pint ZIGI Error:variable ‘ZIGI’ undefined |