sftp 파일을 확인하고 출력을 로그에 반환합니다.

sftp 파일을 확인하고 출력을 로그에 반환합니다.

당신의 도움이 필요해요. 이미 수행한 스크립트를 완료하려고 하는데 완벽하게 실행되지 않습니다.

스크립트는 다음과 같습니다.

#!/bin/bash
#
iclog=log
key="keys/cash_prod_key"
date=$(date +%Y%m%d)
logname="logfile_${date}vendor.log"
file="filename_20190621_vendor"
logdate=$(date +%Y%m%d%H%M%S);
flag="N"


#REMOVING LOG FILES OLDER THAN 30 DAYS

find $iclog -type f -name "filename_*_vendor.log" -follow -mtime +30 -exec rm {} \; -print


#----Log File---------#



#SFTP CHECK

#echo Log BEGIN For $logdate>$iclog/$logname

exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1> $iclog/$logname 2>&1


while [ "$flag" != "Y" ]
do
sftp -b - -oPort=6022 user@sftp_host << EOF
ls -la $file
bye
EOF

if [[ -f $file ]]; then
inf_log "File is available on the vendor........."
sftp -b - -oPort=6022 user@sftp_host <<EOF
ls -la $file
bye
EOF
flag='Y'
else
sleep 300
fi
done

#-------Check file availability--------#

grep -q "$file" $iclog/$logname

if [ $? -eq 0 ]; then
        inf_log "File available!"
else
        err " File is not Found!!! - Please call Support ASAP"
        exit 1
fi

따라서 디버그 모드에서 스크립트를 실행하면 다음과 같은 출력이 표시됩니다.

$ bash -x ./check.sh
+ iclog=log
+ key=keys/cash_prod_key
++ date +%Y%m%d
+ date=20190623
+ logname=filename_20190623_vendor.log
+ file=filename_20190621_vendor
++ date +%Y%m%d%H%M%S
+ logdate=20190623062939
+ flag=N
+ find log -type f -name 'filename_*_vendor.log' -follow -mtime +30 -exec rm '{}' ';' -print
+ exec
+ trap 'exec 2>&4 1>&3' 0 1 2 3
+ exec

스크립트 실행은 이 단계에 머물며 로그 파일의 grep을 진행하지 않습니다. 로그 파일을 보면 최대 절전 모드에 있던 파일도 찾은 것 같습니다.

로그 파일에서 이를 확인하고 동일한 로그 파일의 출력을 반환할 수 있도록 도와주실 수 있나요?

다들 감사 해요

관련 정보