我已经通过 sftp 从远程服务器下载了文件。现在我想检查我的所有文件(给定的 nodeid)是否已下载。如果未下载,则通过 sendmail 给出警告消息。
文件格式:
"$today_date"_MPS_Cust_dump_"$nodeid".list.Z
today_date=date +%Y%m%d
declare -a nodeid=("302" "303" "304" "305" "311" "312" "313" "314" "315" "316" "317" "318"
"410" "411" "412" "415" "416" "418" "431" "432" "433" "434" "435" "436" "407" "408" "409"
"401" "402" "420" "421" "422" "425" "426" "427" "403" "404" "405" "406"
)
答案1
用这个:
today_date="$(date +%Y%m%d)" # use $(...) to assign the output of a command to a variable
declare -a nodeid=(...)
for id in "${nodeid[@]}"; do
[ -e "${today_date}_MPS_Cust_dump_${id}.list.Z" ] || echo "$id is not downloaded"
done | mail -E -s "Subject" [email protected]
- for 循环遍历数组中的每个项目
nodeid
。[ -e "..." ]
检查当前目录中是否存在给定名称的文件|| echo "..."
如果文件不存在则打印一条消息
| mail ...
一切都通过管道传输到mail
,-s
定义主题,-E
当正文为空(所有文件都存在)并且最后一个参数是地址时,不会发送邮件。
答案2
我建议您将这些文件下载到临时文件夹,然后在下载完成后将它们移动到所需的文件夹。
这样您就知道所需文件夹中的所有文件都已完全下载。