我需要你的帮助。我正在尝试完成我已经完成的脚本,但它运行不完美。
这是脚本:
#!/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 。从日志文件来看,似乎甚至找到了它休眠的文件。
您能否帮助我,以便可以在日志文件上检查该文件并返回同一日志文件的输出?
谢谢你们