티스토리 뷰
sftp shell을 작성할때 주의할점
- 수신서버에서 파일이 전송중인지 전송완료인지 판단하기 어려움
- 송신프로그램에서 현재 sftp가 수행중인지 혹은 타임아웃인지 판단하기 어려움.
1번의 경우는 sftp 파일전송이 끝나면 dummy 파일을 하나 더 보내서 수신서버에서 dummy 파일로 전송완료 여부 확인 가능.
2번의 경우 expect 스크립트를 사용하면 다음과 같이 전송상태가 100% 인지 확인 가능하고 timeout 경우도 잡아낼수 있음.
expect 스크립트의 default 타임아웃은 30초 이므로 용량이 큰 파일을 전송할때를 대비해서 타임아웃 시간 설정을 변경해준다.
예시에서는 timeout off (set timeout -1)
#!/usr/bin/expect -f
set timeout -1
set remote [lindex $argv 0]
set recvdir [lindex $argv 1]
set senddir [lindex $argv 2]
set sendfile [lindex $argv 3]
set endfile [lindex $argv 4]
set addr [exec printenv IP]
set user [exec printenv USER]
set pass [exec printenv PASS]
spawn $user@$addr
expect {
"yes/no" {
send "yes\r"
exp_continue
}
"password:" {
send "$pass\r"
}
default {
puts "Login failed\n"
exit
}
}
expect "sftp>" { send "cd $recvdir\r" }
expect "sftp>" { send "lcd $senddir\r" }
expect "sftp>" { send "put $sendfile\r" }
expect {
"*100%*" { }
timeout { exit 2 }
}
expect "sftp>" { send "put $endfile\r" }
expect {
"*100%*" { }
timeout { exit 2 }
}
expect "sftp>" { send "quit\r" }
expect "\r"
'Linux&Unix > Shell' 카테고리의 다른 글
[Shell] 파일 인코딩 변경 (0) | 2018.10.29 |
---|---|
Expect 쉘 스크립트 사용시 주의점 1 - expect argument가 여러개인 경우 (expect multiple conditions) (0) | 2018.09.08 |
쉘스크립트로 폴더 없으면 생성하기 (0) | 2018.08.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 2022 회고
- AWS 이직
- AWS 인터뷰
- 오라클
- AWS TECH U
- AWS 취업 후기
- 프로프레임
- gcp 자격증
- Terraform GCP
- AWS 문화
- AWS 입사
- ProFrame
- 구글 입사 후기
- 구글 이직
- dbio
- SA란
- expect 스크립트
- 아마존 이직
- AWS 후기
- AWS 신입
- AWS 면접
- GCP 자격증 후기
- 뱅크샐러드 면접
- GCP 이직
- TECH U ASA
- 아마존 입사
- AWS 신입 채용
- AWS Associate Solution Architect
- Terraform
- oracle
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함