728x90
반응형
sftp 자동화 script (Expect 활용)
개념
- sftp 자동화를 위해선 Expect 명령어가 필요합니다.
- Expect 란 원격 프로그램에 접속 했을 때, 해당 원격 프로그램에서 명령어를 수행시킬 수 있는 명령어입니다.
- 예를 들면, ssh 를 통해 원격 서버에 접속하기 위해선 로그인을 해야하고, 사람이 ID, PW 를 입력해야 합니다.
- 이러한 작업들을 Expect 를 이용해서 자동화 처리할 수 있습니다.
명령어
- send : 원격 프로그램에 보내는 명령어 입니다.
- 예를 들면, 원격 서버에 ssh 로 접속한 상태에서 send echo hello world 라고 하면 hello world 출력 됩니다.
- spawn : 원격 프로그램을 실행시키는 명령어 입니다.
- ex) spawn ssh xxx
sftp 자동화 Script
- 아래 예제는 sftp 서버에 접근해 파일을 다운로드하는 예제입니다.
#!/usr/bin/expect -f
set id test
set pw test
set ip 127.0.0.1
set port 22
set timeout 500
# connect sftp
spawn sftp -oPort=$port $id@@ip
# input password
expect "password:" {send "$pw\r"}
# /remote/abc.txt 파일을 /local/abc.txt 에 다운로드 함.
expect "sftp>" {send "get /remote/abc.txt /local/abc.txt\r"}
set timeout 200
# exit
expect "sftp>" {send "quit\r"}
결론
- 위 예제를 통해 sftp 자동화 script 를 작성할 수 있으며, crontab 이나 스케줄러, jenkins 같은 거에 위 작업을 등록시킬 수 있으며, 성공여부는 exitCode 를 이용할 수 있습니다.
- exitCode 를 통해 성공이면 성공 로그를 찍고, 실패면 알람 이벤트를 발생시킬 수 있습니다.
Reference
'Utils & Infra & Tool > Shell' 카테고리의 다른 글
프로세스 병렬로 돌리는 예제 Shelll (0) | 2021.08.02 |
---|---|
find, mv 를 조합해서 폴더에서 폴더로 파일 이동 또는 복사 (0) | 2021.04.19 |
unix shell array for loop, for loop 내부에서 curl 호출 (0) | 2021.02.09 |
텍스트 더미 데이터 만드는 Shell (0) | 2020.07.10 |
Sftp Shell Script with password (0) | 2020.07.10 |
댓글