SFTP経由でサーバーに接続できるスクリプトがあります。私が望むのは、ディレクトリに移動して、すべてのサブフォルダとファイルで生成された最後のディレクトリをインポートすることです。ここに例として示したディレクトリは間違っています。私が間違っているのですか?ファイルを入れずにすべてのフォルダを抽出するのですか?非常にありがとう
#!/bin/bash
HOST=192.168.1.133
PORT=22
USER=root
PASSWORD=password
SOURCE_FILE=/root/logs
DIA=`date +"%d/%m/%Y"`
HORA=`date +"%H:%M"`
TIME=`$DAY+$HOUR`
TARGET_DIR="ls -td -- */ | head -n 1"
/usr/bin/expect<<EOD > output.log
spawn /usr/bin/sftp -o Port=$PORT $USER@$HOST
expect "password:"
send "$PASSWORD\r"
expect "sftp>"
send "get -r $SOURCE_FILE $TIME $TARGET_DIR\r"
expect "sftp>"
send "bye\r"
EOD
RC=$?
if [[ ${RC} -ne 0 ]]; then
cat output.log | mail
-s "Errors Received" "[email protected]"
else
echo "Success" | mail -s "Transfer Successful" "[email protected]"
fi
答え1
問題を解決しました。こうなりました。もし必要な方がいらっしゃるなら安否お伝えします。
#!/bin/bash
HOST=192.168.1.123
PORT=3355
USER=lab
PASSWORD=demo
DIR=$(date +"%Y-%m-%d")
/usr/bin/expect<<EOD > output.log
spawn /usr/bin/sftp -o Port=$PORT $USER@$HOST
expect "password:"
send "$PASSWORD\r"
expect "sftp>"
send "cd logs\r"
expect "sftp>"
send "mget -r $DIR\r"
expect "sftp>"
send "bye\r"
EOD
RC=$?
#if [[ ${RC} -ne 0 ]]; then
# cat output.log | mail -s "Errors Received" [email protected]
#else
# echo "Success" | mail -s "Transfer Successful" [email protected]
#fi