본문 바로가기
Utils & Infra & Tool/Shell

sftp 자동화 script (Expect 활용)

by 무대포 개발자 2021. 10. 13.
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

댓글