728x90
반응형

expect에 대한 설명은 expect를 이용한 자동화(1) - ssh 를 참조하기 바란다.

여기서는 expect를 이용해서 scp의 자동으로 passwd를 입력하고, 원격복사하는 쉘을 만들어 보겠다.

 

파일명 

scp.exp 

 파일 내용

 #!/usr/bin/expect

proc usage {} {
    puts "usage: src target id password"
    exit 1
}

set argc [llength $argv]

if { $argc != 4 } {
    usage
}

set timeout -1
set SRC_PATH [lindex $argv 0]
set TARGET_PATH [lindex $argv 1]
set TARGET_ID [lindex $argv 2]
set PASSWD [lindex $argv 3]

spawn scp "$SRC_PATH" "$TARGET_ID@$TARGET_PATH"

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

exit 0

 실행 방법

 scp.exp source_path target_path userid passwd

ex) scp.exp /home/noritor/aaa.txt 10.10.10.1:/home/noritor2/ noritor noritor123

 

 

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

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

728x90
반응형
블로그 이미지

nineDeveloper

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

,