AWS S3 バケットから Linux SFTP にデータをコピーする

AWS S3 バケットから Linux SFTP にデータをコピーする

AWS S3バケットのデータをLinux SFTPにコピーするためのbashスクリプトを作成しています。

#!/bin/bash
#!/usr/bin/expect
set CURRENT_DATE [lindex $argv 0]

CURRENT_DATE=`date +"%Y%m%d"`
cd /home/ubuntu/test/mydumper

aws s3 cp s3://<directory_path>"/ mydumper --exclude "*" --include "collegeboard.*" --recursive

expect << 'EOS'
spawn sftp <user_name>@<Ip_address>:/Bobby
expect "Password:"
expect "sftp>"
send "<password>\n"
expect "sftp>"
send "mkdir $CURRENT_DATE\n"
send "cd $CURRENT_DATE\n"
send "mput collegeboard.*\n"
expect "sftp>"
send "pwd\n"
expect "sftp>"
send "bye\n"
EOS

次のエラーが発生しました。

spawn sftp <user_name>@<Ip_address>:/Bobby
Password Authentication
Password:
Connected to fts.collegeboard.com.
Changing to: /Bobby
sftp> pwd
Remote working directory: /Bobby
sftp> can't read "CURRENT_DATE": no such variable
    while executing
"send "cd $CURRENT_DATE""

答え1

ExpectでこのようにCURRENT_DATEを定義することが機能していることを確認してください。

expect << 'EOS'
spawn sftp <user_name>@<Ip_address>:/Bobby
expect "Password:"
expect "sftp>"
send "<password>\n"
expect "sftp>"
send "mkdir $::env(CURRENT_DATE)\n"
send "cd $::env(CURRENT_DATE)\n"

関連情報