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