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
해당 파일을 임시 폴더에 다운로드한 후 다운로드가 완료되면 원하는 폴더로 이동하는 것이 좋습니다.
이렇게 하면 원하는 폴더의 모든 파일이 완전히 다운로드되었음을 알 수 있습니다.