목차
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
반응형