외부 API를 통해 어제의 로그를 다운로드하려고 합니다. API의 경우 &부터 날짜 범위를 입력 매개변수로 제공해야 합니다.
API에서 호출당 최대 1시간의 로그를 다운로드할 수 있습니다.
그래서 어제의 전체 로그를 다운로드하고 싶다면. 어제 날짜를 기준으로 API를 24번(1시간에 한 번씩) 호출해야 합니다.
API는 GMT 시간만 지원합니다. 따라서 GMT 시간을 제공해야 합니다.
예를 들어:-https://abcd.com/logs?start=날짜부터&end=지금까지
- 첫 번째 사이클아래와 같아야 합니다.
- https://abcd.com/logs?start=2018-04-29T00:00:00Z&end=29-04-2018T00:59:59Z
- 두 번째 루프아래와 같아야합니다
- https://abcd.com/logs?start=2018-04-29T01:00:00Z&end=29-04-2018T01:59:59Z
- 마지막 루프아래와 같이,
- https://abcd.com/logs?start=2018-04-29T23:00:00Z&end=2018-04-29T23:59:59Z
이 스크립트를 cron 일정에 추가하여 매일 실행되어 어제의 24시간 로그 다운로드가 완료되도록 하겠습니다.
핵심은
- 항상 어제 날짜
- 형식GMT
- 24주기
아래에 언급된 답변에서는 오류가 발생합니다. 현재 시간을 고려하고 루프를 실행하는 이 스크립트로 시작합니다. 대신 루프는 GMT 시간 00:00:00에 시작되어야 합니다.
#!/bin/bash
FROM_DATE=$(date -u -d "1 day ago" +%Y-%m-%d"T"%H":00:00""Z")
for i in {0..3}
do
echo "FROM_DATE : $FROM_DATE"
TO_DATE=$(date -u +%Y-%m-%d"T"%H":59:59""Z" -d "1 day ago""$date + $i hour")
echo "TO_DATE : $TO_DATE"
FROM_DATE=$(date -u +%Y-%m-%d"T"%H":00:00""Z" -d "1 day ago""$date + $i hour""$date + 1 hour")
done
답변1
이 시도.
#!/bin/bash
#
yesterday=$(date --utc --date 'yesterday' +'%Y-%m-%d')
for hour in {0..23}
do
printf "https://abcd.com/logs?start=%sT%02d:00:00Z&end=%sT%02d:59:59Z\n" $yesterday $hour $yesterday $hour
done
가끔씩 발생하는 윤초를 처리할 수 없습니다. 이 작업을 수행해야 하는 경우 하루의 마지막 범위가 에서 로 이동해야 할 수 있는 더 복잡한 코드를 사용하세요 23:00:00
. 23:59:60
단, 대상 애플리케이션이 이 코드도 처리할 수 있는지 확인하세요.
#!/bin/bash
#
yesterday=$(date --utc --date 'yesterday' +'%Y-%m-%d')
leapsecond=$(date --utc --date @$(( $(date --utc --date '00:00:00' +%s) -1 )) +'%S')
lastsecond=59
for hour in {0..23}
do
[[ hour == 23 ]] && lastsecond=$leapsecond
printf "https://abcd.com/logs?start=%sT%02d:00:00Z&end=%sT%02d:59:%02dZ\n" $yesterday $hour $yesterday $hour $lastsecond
done
답변2
예상되는 결과를 얻습니다.
#!/bin/bash
for i in {00..23}
do FROM_DATE=$(date -u -d "1 day ago" +%Y-%m-%d"T"$i":00:00Z")
echo "FROM_DATE:" $FROM_DATE | tr -d '\r'
TO_DATE=$(date -u +%Y-%m-%d"T"$i":59:59Z" -d "1 day ago")
echo "TO_DATE : $TO_DATE" | tr -d '\r'
done
당신의 도움을 주셔서 대단히 감사합니다