오호....
정말 재미있게 봤습니다.
으으...전 왜 expect 써먹을 생각 모하고 프로그램 짜기만 했을까요.
역시....밥텅에 가까운 생각였음을...
멋집니다. 단점이 가장...
솔직담백한....유용한 정보이군요.
늘 즐거운 시간&리눅싱 되시길...
서로기 였지요.
: 리눅스 가지고 뭔가 쓸데 없는 짓을 해보기 위해 머리를 굴리다가
: 유용하게 잘써먹고 있어서 올려 봅니다.
:
:
: 라우터 설정값 변경하는 꽁수(손안대고 코풀기)
: 목적 : 일정시간마다 반복적으로 라우터 설정을 바꿀일이 있을때
: 개요 : 하이텔 자동접속 스크립트작성해서 사용하던 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
: 선로 검색중입니다.
: 선로 검색중입니다. #정상이면 요 메시지만 나옴
: 선로 검색중입니다.
: 선로 검색중입니다.
: 선로 검색중입니다.
: 선로 검색중입니다.