티스토리 뷰

이번에는 24포트 스위치를 개별 제어하기 위해 MFC 제어 코드를 개발하면서 알게 되었던 노하우를 알려드립니다.

개발에 사용했던 스위치는 cisco사의 WS-C2960L-24TS-AP 24 포트 모델 입니다.

24포트 스위치를 납품하고 난뒤에 정리할려니 찍어놓은 사진도 없고 소스만 남아 있네요. ㅜㅜ


그래도 유용한 제어 명령들은 모두 알려드리겠습니다.

 

<PUTTY를 이용한 제어 명령>


  


1) putty를 열고 연결된 com포트를 선택, Speed는 9600선택,  시리얼로 접속

 

2) CMD 명령창이 다음과 같이 뜨면    switch> enable입력


3) cisco 입력(이거는 초기 스위치에 세팅된 패스워드임)


4) 속도 올리는 명령(보통 기본 스위치 세팅은 랜선을 꽃으면 바로 불이 들어오는게 아니라 약 30초 정도 인식하는데 시간이 걸리는데 속도 올리는 명령을 쓰면 1초 만에 스위치포트에 LED가 켜짐)
Config t
spanning-tree mode rapid-pvst
exit

config t
interface GigabitEthernet0/1  //포트별로 개별적으로 세팅 0/2 0/3 이런순으로 올라감
spanning-tree portfast
exit

5) 포트 비활성화 (해당 포트를 Disable시키는 명령임)
interface gigabitethernet0/1   //사용안하는 포트 비활성화
shutdown

6) 포트 활성화 (해당 포트를 Enable시키는 명령임)
interface gigabitethernet0/1
no shutdown


이렇게 하이퍼 터미널이나 PUTTY를 이용해서는 쉽게 콘트롤이 됩니다

 

아래는 스위치 제어명령을 MFC응용프로그램에 코드로 적용하는 방법입니다.

시리얼 통신은 일반적으로 인터넷에 돌아다니는 CommThread.cpp를 사용했습니다.
대략적으로 코드를 기술하면

CCommThread m_ComuPort;  선언

아래는 코드를 간략히 설명하면 24포트 스위치의 시리얼 포트를 열고 1번과 2번의 포트의 반응 속도를 빠르게 하는 소스입니다.
위에도 설명했지만 다시 한번 말씀 드리자면 기본 스위치 세팅은 랜선을 꽃으면 바로 불이 들어오는게 아니라 약 30초 정도 인식하는데 시간이 걸리는데 이는 사용자 입장에서는 너무 답답한 속도 입니다 그래서 속도 올리는 명령을 쓰면 1초 만에 스위치 포트에 LED가 켜지면서 바로 인식이 됩니다. 그리고 1번과 2번의 포트를 사용하지 못하도록 비활성화 하는 코드입니다.

if(m_ComuPort.OpenPort(byIndexComPort(m_iSerialPort), CBR_9600, 8, 0, 0) ==TRUE)  //시리얼 포트 오픈
{
 Sleep(1000);                     // 연결 속도로 인해 딜레이 필요
 SendRouterCmd(_T("\r"));  //포트 오픈후 바로 라우터 암호 입력(PUTTY와 다른점은 MFC에서는 뒤에 \r의 개행문자를 반드시 넣어야함)      
 Sleep(1000);
 SendRouterCmd(_T("\r"));  //라우터 오픈후 타이밍으로 인해 명령 안먹히는 문제로 추가
 SendRouterCmd(_T("enable\r"));

 SendRouterCmd(_T("cisco\r"));  //스위치 패스워드

 SendRouterCmd(_T("Config t\rspanning-tree mode rapid-pvst\r"));

 SendRouterCmd(_T("interface GigabitEthernet0/1\rspanning-tree portfast\rshutdown\r"));       // 1번 포트 속도를 올리고 비활성화 상태로 바꾼다 (MFC에서는 여러 명령어를 개행으로 구분하여 한꺼번에 명령을 보내도 됨)
 SendRouterCmd(_T("interface GigabitEthernet0/2\rspanning-tree portfast\rshutdown\r"));       // 2번 포트 속도를 올리고 비활성화 상태로 바꾼다
    SendRouterCmd(_T("exit\r"));
}

 

<포트 속도 빠르게 하는 명령 함수 구현부>

 

요렇게 세팅이 끝나면 기본적으로 스위치의 반응속도가 올라간것입니다.

여기서 내가 1번 포트만 사용하겠다고 하면 아래 함수를 호출하면 되겠죠?
SendRouterCmd(_T("interface gigabitethernet0/1\rno shutdown\r"));  

 

<SendRouterCmd()함수 구현부>

 

요렇게만 하면 내가 원하는 포트만 활성화 되서 통신을 할수가 있습니다.

이런 코드를 잘 활용하면 스위치에 특정 포트만 온/오프를 할수 있으므로 여러모로 유용하게 사용하실수 있을듯합니다.

구현 코드를 첨부하지는 않았지만 궁금증 있거나 문의 사항 있으면 댓글 주세요.

그럼 이만^^