필요한 파일을 모두 다운로드한 경우 쉘 스크립트를 체크인하는 방법

필요한 파일을 모두 다운로드한 경우 쉘 스크립트를 체크인하는 방법

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

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

관련 정보