'github'에 해당되는 글 2건

  1. 2017.04.03 [정보공유]ACI Dashboard
  2. 2014.08.13 Python for Networker : Part 6-2

안녕하세요.  이번 포스팅은 정보 공유 포스팅입니다.

Cisco ACI의 Dashboard에 대한 내용입니다.

요즘은 많은 벤더의 장비들이 그러하듯이 Cisco ACI도 REST-API나, SDK를 사용하여 다양한 것들을

추가적으로 구현하여 사용이 가능합니다. 

#앞으로 6월에 진행될 네트워크 전문가 따라잡기 커뮤니티의 N.EX.T에서도 관련 세션을 발표할려고 생각중입니다! ^^  


Cisco Korea에서는 이러한 프로그래머빌리티를 위해서 시스코 본사의 Github이외에

Cisco Korea의 Git(https://github.com/CiscoKorea)을 운영하고 있는 데,

오늘은 그 Github에 공유 중인 ACI Dashboard에 대해서 간단히 살펴봅니다. ^^


ACI Dashboard로 공개되어 있는 오픈소스 프로젝트는 Webkit과 archon이 있는 데,

archon이 신 버전, Webkit이 구 버전이라고 보시면 됩니다.

우선 webkit과 archon 모두 설치해서 돌려보기는 했으나, 아래의 화면은 archon입니다. ^^


설치 방법은 Cisco Korea git에서 확인하시면 되시구요. (https://github.com/CiscoKorea/archon)


대시보드를 실행하면 아래와 같이 로그인 화면이 뜨게 됩니다. (물론 초기에는 Cisco 로고가 나옵니다.)

로그인을 하고나면, 아래와 같이 메뉴를 고를 수 있는 데,

ACI에 대한 메뉴와, ASA 그리고 Sample이라고 되어 있는 부분이 있는 데,

Sample이라고 되어 있는 부분은 NX-OS에 대한 부분이 채워질 예정이라고 합니다.

ACI Dashboard로 들어가면, 초기 개요 화면이 있으며,

추가적으로 상태, 관계도, 점검, 분석, 도구 등의 메뉴가 있습니다.

아래는 초기 개요 화면입니다 .

현재 도메인(APIC 기준입니다.)에 대한 전체 정보가 뜨고, 각 상태 정보를 한 눈에 볼 수 있습니다.


기타 다른 메뉴들을 눌러보면, 이런 저런 대시보드에 대한 기능들이 존재합니다.

기존 버전인 Webkit과 UI가 바뀐 부분 말고 대부분의 기능으 대동소이 한 것 같습니다.

우선 ACI에서 흩어져서 볼 수 있는 내용들을 한 눈에 보기 쉽게 해 놓은 부분들도 있어서 좋습니다.

물론.. 메뉴를 눌러보다 보면.. 그래서 이걸 어디에 쓰지? 라는.. 생각이 문득 들기도 합니다.


제일 좋은 건, 특정 Endpoint에 대한 정보를 검색해서 찾을 수 있다는 것?

물론 APIC에 직접 접속해서 확인도 가능하고, APIC에서 찾아보는게 보다 많은 정보를 볼 수 있겠지만

그래도 Dashboard에서 손쉽고 빠르게 찾아볼 수 있는 점은 장점인 듯 싶습니다.

 

물론 운영자 입장에서의 100% 입맛에 맞추기는 어렵겠지만,

결국 이러한 도구들처럼, 필요한 부분들을 개발해서 사용할 수 있는 오픈 환경이 제공되어 진다는 점이

현재의 트렌드이자.. 앞으로 나아가는 방향 중에 하나가 아닐까 싶습니다.

 

 




Posted by 네떡지기
프로그래밍/Python2014.08.13 12:20

이번 포스팅은 별도의 Part은 아니고~ 추가 포스팅입니다.

지난 Part 6에서 다뤄진 내용에 대해서 Nexus 7K용으로 변경한 코드입니다.

꼭 바꿔야하는 부분을 제외하고.. 약간 추가적으로 내용 업데이트도 함께 했습니다. (그 부분은 5K도 공통사항이긴합니다..)

Nexus 7K로 변경해야 할 때, 어디를 바꿔야 하는지 문의하시는 분이 계셔서 수정해서 올려드립니다.
지난 번에 생각했던 것보다 조금 더 수정해야 하는 부분이 있어서. ^^;

포스팅으로 대체했습니다.

 

Python for Networker : Part 6 보기

 

Github에서 보기 

 


 

 

 

 ○ IP Info - Nexus 7000

 __author__ = 'Network ZIGI - Ko Jae Sung'

 #!/bin/env python
import argparse
import sys 
import cisco 
IP = 'IP-Address' 
MAC = 'Mac-Address' 
Vlan = 'Vlan' 
Intf = 'Interface' 
Desc = 'Description' 
IP_info = {IP:'None', MAC:'None', Vlan:'None', Intf:'None', Desc:'None'} 

def get_ARP_Table(ipaddr): 
    arpCmd = 'sh ip arp ' + ipaddr 
    arpCmdResult = cisco.cli(arpCmd) 
    arpCmdResultList = arpCmdResult.split('\n') 
    for arp in arpCmdResultList: 
        if (-1<arp.find(args.ip)):   
            return arp           
    else: 
        print ' %s : Not found IP Address Infomation' % args.ip  
        sys.exit() 

def get_IP_MAC_info(info): 
    info_list = info.split()          
    IP_info[IP] = info_list[0]        
    IP_info[MAC] = info_list[2]          
    IP_info[Vlan] = info_list[3][4:]    
                                     
def get_Interface_info(): 
    macCmd = 'sh mac address-table addr ' + IP_info[MAC] 
    macCmdResult = cisco.cli(macCmd) 
    macCmdResultList = macCmdResult.split('\n') 
 
    for infInfo in macCmdResultList: 
        idx = infInfo.find(IP_info[MAC]) 
        if(-1<idx): 
            IP_info[Intf] = infInfo[58:] 
            get_Description_info(IP_info[Intf]) 
            break 


def get_Description_info(iInfo): 
    if(iInfo.find('Eth') == 0 or iInfo.find('Po')==0):  
        intCmd = 'sh int desc | inc ' + iInfo 
        intCmdResult = cisco.cli(intCmd) 
        if(intCmdResult != ''): 
            intCmdResultList = intCmdResult.split('\n') 
            IP_info[Desc] = intCmdResultList[0][25:].strip() 

def show_IP_info(): 
    print '================================================' 
    print '             IP Info : NetworkZIGI              ' 
    print '================================================' 
    print '%-15s : %s' % (IP,IP_info[IP]) 
    print '%-15s : %s' % (MAC,IP_info[MAC]) 
    print '%-15s : %s' % (Vlan, IP_info[Vlan]) 
    print '%-15s : %s' % (Intf, IP_info[Intf]) 
    print '%-15s : %s' % (Desc,IP_info[Desc]) 

parser = argparse.ArgumentParser('Args',description='Args Desc') 
parser.add_argument('ip') 
args = parser.parse_args() 

iparp = get_ARP_Table(args.ip) 
get_IP_MAC_info(iparp) 
get_Interface_info() 
show_IP_info() 

 

 

Posted by 네떡지기

티스토리 툴바