>> Delete No. 517 article
No. expect로 라우터 설정 바꿔 보기

등록 2000-05-23 14:14:00     조회 5
이름 최진우    

		리눅스 가지고 뭔가 쓸데 없는 짓을 해보기 위해 머리를 굴리다가
유용하게 잘써먹고 있어서 올려 봅니다.
  라우터 설정값 변경하는 꽁수(손안대고 코풀기)
목적 : 일정시간마다 반복적으로 라우터 설정을 바꿀일이 있을때 
개요 : 하이텔 자동접속 스크립트작성해서 사용하던 expect를 이용하여
       시스코 라우터에 접속하여 설정값을 변화 시키고 이것을 크론을
       이용하여 주기적으로 실행하게 한다.
의의 : 된다.
성과 : 쓸데 없는 일에 힘을 낭비 했다.
단점 : 보안이 중시되는 환경에서는 함부로 실행하면 안된다.
       설정화일의 퍼미션 관리를 잘해서 라우터의 패스워드가
       유출되는 것을 철저히 막아야 한다.
       나말고는 이런짓을 해볼 사람이 절대 없다.
       초기 노가다가 상당히 많이 든다.
       모조리 설정해놓고 오래동안 사용하다 보면
       나중에는 라우터 설정 명령어를 까먹는다.
 사용예 : 시스코 라우터 시리얼 포트별 crc에러 주기적 삭제
         시리얼 포트별 crc에러 발생 현황 삭제전  로그 화일 기록
         한달에 한번씩 전관서 라우터에서  ping 테스트및 결과값 기록
         퇴근시간 마다 네트웍을 막아야할 관서에 해당되는 시리얼 포트
         다운시키기. 라우터에 기록되어 있는 로그화일 갈무리
         등등등 별짓 다해볼수 있음..
       
예제 화일
#/etc/crontab
#/etc/crontab 화일에 아래와 같은 두줄을 입력합니다.
40 08 * * * root /usr/bin/noshut >> /tmp/log.outup 2>&1
#아침 08시40분에 셔트다운 시켜던 포트를 업시키는 명령줄
#명령 실행중 에러가 발생하면 tmp디렉토리에 log.outup이라는 화일에 기록
10 18 * * * root /usr/bin/shutdown1 >> /tmp/log.out 2>&1
#저녁 18시 10분에 라우터의 시리얼 포트를 다운 시키는 명령줄
   패스가 지정된 디렉토리에 아래와 같은 화일을 만듬니다.
 #!/usr/bin/expect
#화일명:/usr/bin/shutdown
spawn telnet 10.11.1.1
expect -re "password:" #1차 패스워드 입력 기다림
send "babo
"          #1차 패스워드 입력
expect -re "Router>"   #일반유저 모드
send "en
"            #enable 패스워드 입력 모드
expect -re "password:" #2차 패스워드 입력 기다림
send "babo
"          #2차 패스워드 입력
expect -re "Router#"   #이거이 라우터 루트 프롬프트.히히
send "conf t
"        #콘피그 모드로 가자
expect -re "Router#(config)#" #콘피그 모드
send "int s3/2
"             #인터페이스 시리얼3/2번을 수정하자
expect -re "Router#(config-if)#" #인터페이스 설정모드에서 입력 기다림
send "shut
"                    #shutdown 명령 입력
expect -re "Router#(config-if)#"
send "
"                      #콘피그모드에서 빠져 나가는 명령(ctrl
+ z)
expect -re "Router#"             #루트 모드상태
send "q
"                       #종료
interact
   #!/usr/bin/expect
#화일명 : /usr/bin/noshut 다운시켰던 포트를 다시 업시키는 화일
spawn telnet 10.11.1.1
expect -re "password:"
send "babo
"
expect -re "Router>"
send "en
"
expect -re "password:"
send "babo
"
expect -re "Router#"
send "conf t
"
expect -re "Router#(config)#"
send "int s3/2
"
expect -re "Router#(config-if)#"
send "no shut
"    #요거만 다름 no shutdown 명령 입력
expect -re "Router#(config-if)#"
send "
"
expect -re "Router#"
send "q
"
interact
 이상 끝..
 [요청및 부탁]
사실은 이글을 올린 실제 이유는 이겁니다.
아래 화일을 제가 이 1원짜리 팁란이 있는줄 모르고
떠들어 보세 란에 올렸다가 이장님이 팁란으로 올리라고 하시길래..
이게 팁이 될수는 없고 해서 쓸데 없이 윗글 올렸습니다.
whatsUP(www.ipswitch.com)이라는 윈도우용 핑프로그램이 있지만
웬지 윈도우 핑보다는 리눅스 핑이 더 믿음직스러워서
그럼니다.
너무 폼이 안나서 그러는데  업그레이드좀 시켜주시면 고맙겠습니다.
스크립트화일인데 이걸 perl로 바꿔 주신다거나 C로 짜주시면
성은에 망극하겠습니다.
  #ping.sh(Rev.0.5)
cont="true"
while [ $cont = "true" ] 다 아시는 루프 정의
do
echo "선로 검색중입니다." #순환될때 마다 출력되는 메시지
 ping -c 1 10.11.4.1> nul
#핑 을 때리는데 딱 1개만 보내고 출력은 nul로 보냄
 hoho=$?
#핑을 친 결과값은 hoho이다 라고 정의
 if [$hoho = "1" ]; then
#만일 hoho값이 1이면(응답이 없는 경우 1, 응답이 있으면 0임)
 echo "앞집 속도:T1  Tel:123-5678선번:123452"
#관서이름과 속도, 전화번호, 선번을 출력해라.
fi
 ping -c 1 10.11.8.1 > nul
 hoho=$?
 if [$hoho = "1" ]; then
 echo "관서명: 뒷집 속도:T1 Tel:0331-123-4567,선번:123220"
 fi
 ping -c 1 10.11.4.1> nul
 hoho=$?
 if [$hoho = "1" ]; then
 echo "옆집 속도:T1  Tel:321-7654선번:456220"
 fi
.
. # 관서 수많큼 적어 넣음
.
done
  위의 스크립트를 실행시킨 예.
 선로 검색중입니다.
미아리,속도:56K Tel:422-2xxx,선번:123456 #ping 응답이 없으면 이렇게 표
시됨
선로 검색중입니다.
미아리,속도:56K Tel:422-2xxx,선번:123456
선로 검색중입니다.
선로 검색중입니다.                      #정상이면 요 메시지만 나옴
선로 검색중입니다.
선로 검색중입니다.
선로 검색중입니다.                     
선로 검색중입니다.
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved