博客园  :: 首页  :: 管理

记录一个功能脚本的实现,每天拉取所有账号的CloudTrail日志到本地

 

1、拉取从2025-08-03 到 2025-08-20的所有的CloudTrail日志, while 语句加上了判断,到了 2025-08-21 停止循环

2、不同的账号,都添加到 awsaccounts 这个indexed array 索引数组,这种数组不需要特别声明,直接 awsaccounts[数字] 定义即可

3、核心的就是日期的加一天(shell中可以都是字符串类型日期):

today=2025-08-03   和   today=$(date -d "+1 days $today" +%F)

 

Shell 脚本内容如下(前置条件,Linux OS中需要安装有gzip软件包,会提供有gunzip命令):

#!/bin/bash
#

PATH=/home/QQ-5201351/.Python-3.8.6/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/QQ-5201351/.local/bin:/home/QQ-5201351/bin

workdir=$(cd "$(dirname "$0")"; pwd)

awsaccounts[0]=111111111111
awsaccounts[1]=222222222222
awsaccounts[2]=333333333333
awsaccounts[3]=444444444444


today=2025-08-03

while [ "$today" != "2025-08-21" ];do

    pulltoday=$(date -d $today +%Y/%m/%d/)

    saveclouddir=${workdir}/aws-cloudTrail
    cloudTrailJsonDir_today=$saveclouddir/$today

    if [[ ! -d $cloudTrailJsonDir_today ]];then
        mkdir -p $cloudTrailJsonDir_today
    fi
    # del today cloudTrail data
    rm -f $cloudTrailJsonDir_today/*.gz
    rm -f $cloudTrailJsonDir_today/*.json

    # pull today and gunzip
    for account in ${awsaccounts[@]};do
        aws s3 sync --profile 888888888888 s3://mycentrallogs/AWSLogs/$account/CloudTrail/cn-north-1/$pulltoday $cloudTrailJsonDir_today >/dev/null
    done

    # 直接使用gunzip命令,可能会出现后面的参数太长、命令报错,于是使用xargs的方式 
    # gunzip $cloudTrailJsonDir_today/*
    find $cloudTrailJsonDir_today/ -type f | xargs gunzip

    today=$(date -d "+1 days $today" +%F)

done

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/19071705