>> Edit article
이름
제목
패스워드
오호.... 정말 재미있게 봤습니다. 으으...전 왜 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 : 선로 검색중입니다. : 선로 검색중입니다. #정상이면 요 메시지만 나옴 : 선로 검색중입니다. : 선로 검색중입니다. : 선로 검색중입니다. : 선로 검색중입니다.
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved