사용자의 AWS 액세스 키가 90일보다 오래된 경우 보안 팀에 알려야 합니다. 나는 이것을 bash에서하고 있습니다.
지금까지 내 스크립트에서 출력된 키와 날짜는 다음과 같습니다.
AKIAJS7KPHZCQRQ5FJWA : 2016-08-31T15:38:18Z
AKIAICDOHVTMEAB6RM5Q : 2018-02-08T03:55:51Z
Bash에서 날짜 형식을 사용하여 날짜가 90일보다 오래된지 확인하는 방법은 무엇입니까?
우분투 18.04를 사용하고 있습니다. 날짜 형식은 ISO 8601이라고 생각합니다. 오류가 있는 경우 확인/수정 부탁드립니다.
답변1
GNU를 사용하여 date
날짜/시간 문자열을 초로 변환할 수 있습니다(1970년 1월 1일 "epoch" 이후). 거기에서 간단한 산술 비교가 시작됩니다.
datetime='2016-08-31T15:38:18Z'
timeago='90 days ago'
dtSec=$(date --date "$datetime" +'%s') # For "now", use $(date +'%s')
taSec=$(date --date "$timeago" +'%s')
echo "INFO: dtSec=$dtSec, taSec=$taSec" >&2
[ $dtSec -lt $taSec ] && echo too old
답변2
아래 스크립트는 위에 제공된 형식을 읽지만 기존 변수에 이미 값이 있는 경우 코드를 결합할 수 있습니다.
#!/bin/bash
cutoff=$(date -d '90 days ago' +%s)
while read -r key colon date
do
age=$(date -d "$date" +%s)
if (($age < $cutoff))
then
printf "Warning! key %s is older than 90 days\n" "$key" >&2
fi
done < input