프로그래밍/리눅스 쉘 & utils

expect를 이용한 자동화(2) - scp

Noritorgigi 2013. 9. 3. 21:23
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