본문 바로가기

Network/그 외

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

[파일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

[파일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

[파일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