본문 바로가기

IT 이야기/네트워크(Network)

Linux Shell Script 를 이용한 Cisco IOS Password 일괄 변경

728x90
반응형

안녕하세요. 아이홀입니다.
리눅스 서버를 통한 시스코 장비 패스워드 일괄 변경 방법입니다.

대량의 장비를 일괄작업할 때 사용하기 위한 방법이며,
Password 변경 뿐만 아니라 다른 작업도 유용하게 적용할 수 있습니다.

준비해야할 건 리눅스 서버와 네트워크 장비
그리고 아래 3개의 파일을 이용하여 적용 가능합니다.

[파일1] IP-list : 장비 List 
[파일2] ssh_passch_start.sh : 실행파일 (IP-list 파일의 내용을 읽어 passch.sh 에 순차적으로 실행시킴)
[파일3] passch.sh : Config 설정 파일 (필요한 Script 내용을 입력)

* 추가적으로 하위 Logs 디렉토리에 실행 Log 를 남기도록 함
*. 장비 접속이 가능한 Linux 기반의 Console Server 에서 실행하여 일괄 작업 가능

 

 

 

[파일1] IP-list

10.10.10.1 
10.10.10.2
10.10.10.3
10.10.10.4
10.10.10.5

 

 

[파일2] ssh_passch_start.sh

#!/bin/bash 
# ssh_passch_start.sh 

while read ipadd 
do 
#echo $ipadd 
export ipadd 
./passch.sh $ipadd 

done < IP-list

  이 파일이 실행파일이며, 1번 파일의 IP Address 를 읽어와서 아래 3번 파일의 내용을 각각 실행시킵니다.

실행 방법은 리눅스 접속 상태에서 " ./ssh_passch_start.sh " 라고 입력하여 실행 가능합니다.

 

 

[파일3] passch.sh

#!/usr/bin/expect -f 

        set timeout 20 
        set IPaddress [lindex $argv 0] 
        set Username "******"   <-- 로그인 계정명 
        set OPassword "**********"   <-- 기존 User Password
        set OSecret "**********"    <-- 기존 Secret Password
        set NPassword "*********"   <-- 신규 User Password
        set NSecret "***********"   <-- 신규 Secret Password
        set Directory /home/user1/Scripts/Cisco/logs 
# Logging 
        log_file -a $Directory/session_$IPaddress.log 
        send_log "### /START-SSH-SESSION/ IP: $IPaddress @ [exec date] ###\n"

# SSH  or Telnet  
#       spawn ssh -o "StrictHostKeyChecking no" $Username@$IPaddress   <-- SSH 로 장비 접속할 경우
        spawn telnet $IPaddress   <-- Telnet 으로 장비 접속할 경우

# Config 
        expect -timeout 2 "*name: " 
        send "$Username\n" 
        expect -timeout 2 "*assword: " 
        send "$OPassword\n" 
        expect -timeout 1 ">" 
        send "enable\n" 
        expect -timeout 2 "*assword: " 
        send "$OSecret\n" 
        expect -timeout 1 "#" 
        send "conf t\n" 
        expect -timeout 1 "(config)#" 
        send "enable secret $NSecret\n" 
        expect -timeout 1 "(config)#" 
        send "username $Username secret $NPassword\n" 
        expect -timeout 1 "(config)#" 
        send "end\n" 
        expect -timeout 1 "#" 
        send "wr\n" 
        expect -timeout 1 "#" 
        send "exit\n" 
        sleep 1 
        send_log "\n### /END-SSH-SESSION/ IP: $IPaddress @ [exec date] ###\n" 
exit

실제 장비에 접속해서 실행되는 스크립트 내용이 3번 파일에 포함하고 있으며, 

필요에 따라 다른 일괄작업 등도 "expect , send " 명령을 통해 실행할 수 있습니다.

 

 

 

 

 

읽어주셔서 감사합니다
티스토리 댓글과 공감은 로그인이 필요 없습니다.
로그인하시면 구독 가능합니다.

728x90
반응형