728x90
반응형

expect는 리눅스 혹은 유닉스에 있는 script language이다.

일반 쉘을 이용할 경우, ssh, scp, passwd 변경등을 할 때, script로 처리할 수 없고, console창에

interactive하게 입력해야 한다. 이럴 경우에 사용할 수 있는 script language가 expect이다.

expect는 화면에 특정 문자열이 왔을 때, 응답으로 어떤 문자열로 응답하는 식의 처리가 가능하다.

이를 이용해 ssh 자동 접속 쉘, scp 접속 쉘, passwd 변경 쉘 등을 만들어 보겠다.

expect에 대해서 더 정확한 문법을 알고 싶다면, 다음 URL을 참조하기 바란다.

 

 

파일명 

ssh.exp 

 파일 내용

 #!/usr/bin/expect

proc usage {} {
    puts "usage: host id password command"
    exit 1
}

set argc [llength $argv]

if { $argc != 3 } {
    usage
}

set timeout -1
set HOST [lindex $argv 0]
set USERID [lindex $argv 1]
set PASSWD [lindex $argv 2]

spawn ssh $USERID@$HOST

expect {
    -re "No route" { exit 1 }
    -re "try again" { exit 1 }
    -re "yes/no" { send "yes\r"; exp_continue }
    -re "password:" { send "$PASSWD\r"; exp_continue }
}

interact

 실행 방법

 ssh.exp ip_address userid passwd

ex) ssh.exp 10.10.10.1 noritor noritor123

 

 

위의 표의 파일명과 파일 내용으로 파일을 만든 뒤, 파일 권한을 실행 가능하게 변경한 뒤, 실행방법대로 실행하면 된다. 배포 쉘을

만들 때 꽤 유용하게 쓰인다.

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,