본문 바로가기
Shell Script/Network Script

(Shell Script) Cisco 스위치 정보 조회 스크립트 만들기

by 미니몬 2024. 6. 7.

목차

    728x90
    반응형

    Summary

    이번 게시물에서는 SSH를 통해 원격으로 Cisco L2 스위치에 접속해서 VLAN 설정 정보를 조회하고 결과를 파일에 저장하는 리눅스 쉘 스크립트를 작성하는 방법을 알아보겠습니다. 네트워크 관리자 혹은 인프라 엔지니어는 이러한 네트워크 장비에 컨피그 및 로그를 주기적으로 확인해야하는데 해당 스크립트를 활용하여 반복적인 작업을 단순화 할 수 있습니다.

     

     

    1. 개요

    이 스크립트는 'expect' 툴을 사용하여 ssh 세션을 핸들링 합니다. 스크립트는 다음 단계로 구성됩니다.

     

    • 환경설정 : 사용자의 이름, 비밀번호, 호스트 주소 및 실행할 명령어를 변수로 설정합니다.
    • 로그 파일 설정 : 명령어 실행 결과를 저장할 로그 파일의 경로를 지정합니다.
    • 입출력 핸들링 : expect의 기능으로 ssh 접속, 패스워드 입력, 명령어 실행, 로그 저장을 실행합니다.
    • 파일 권한 설정 : 로그 파일의 권한을 설정하여 관리합니다.

     

     

    2. 사전 작업

    먼저 두 가지 사전 작업이 필요합니다. 

    • expect 툴 설치 
    ### Ubuntu 및 Debian 계열
    sudo apt-get install expect
    
    ### CentOS 및 RedHat 계열 7.9버전 이하 
    sudo yum install expect
    
    ### CentOS 및 RedHat 계열 8.0버전 이상 / Fedora 계열
    sudo dnf install expect

     

    • 스위치로의 ssh 접속 확인
    ssh [USER]@[HOST]

     

     

    3. 스크립트 작성

    스크립트 파일에 원하는 커맨드와 출력 결과를 저장할 디렉터리, 파일명을 지정해주세요.

     

    #!/bin/bash
    
    # 환경 변수 설정
    HOST="192.168.0.1"
    USER="admin"
    PASSWORD="admin"
    COMMAND="show vlan"
    LOG_FILE="/userpath/vlan_config_$HOST"
    
    # expect 스크립트 시작
    expect << EOF
    log_file -a $LOG_FILE    # 로그 파일에 결과 추가
    log_user 0               # 결과가 화면에 출력되지 않음
    set timeout 10           # 타임아웃 설정
    spawn ssh $USER@$HOST    # SSH 세션 생성
    expect "assword:"        # 비밀번호 프롬프트 대기
    send "$PASSWORD\r"       # 비밀번호 입력
    expect "#"               # 명령 프롬프트 대기
    send "$COMMAND\r"        # 정보 조회 명령 실행
    expect "#"               # 명령 완료 대기
    send "exit\r"            # SSH 세션 종료
    expect eof               # EOF 대기
    EOF
    
    # 로그 파일 권한 설정
    chmod 644 $LOG_FILE

     

     

     

    이 스크립트는 네트워크 설정 정보를 자동으로 수집하는 기본적인 예제입니다. 실제 환경에서는 이 스크립트를 기반으로 더 복잡한 자동화 작업을 개발할 수 있습니다. 자동화는 반복 작업을 줄이고, 효율성을 높이며, 오류 가능성을 최소화하는 데 큰 도움이 됩니다.

    728x90
    반응형