0

我有一个 bash 脚本,可以确定某人的 aws 密钥是否超过 90 天。如果是,脚本会向他们发送一封电子邮件,其中包含有关如何轮换密钥的信息。

如果没有密钥超过 90 天,我希望脚本打印一条语句,因此不会发送电子邮件。

对于每个用户的密钥,我有两个 if 独立 if 语句:

if [ "$key1dtSec" -lt "$taSec" ]; then
    printf "%s created on %s\\nThis key is %s days old and needs to be replaced.\\nAn email will be sent." "$user_access_key1" "$key1_date_created." "$key1AgeDays"
    echo -e  "$template1" | /usr/bin/mail --append="Content-type: text/html" -s "AWS Key Rotation Needed for $user_name in $aws_key" "$email_address"
    echo; echo
fi

if [ "$key2dtSec" -lt "$taSec" ]; then
    printf "%s created on %s.\\nThis key is %s days old and needs to be replaced.\\nAn email will be sent." "$user_access_key2" "$key2_date_created"  "$key2AgeDays"
    echo -e  "$template2" | /usr/bin/mail --append="Content-type: text/html" -s "AWS Key Rotation Needed for $user_name in $aws_key" "$email_address"
    echo; echo
fi

key1dtSec并且key2dtSec是以秒为单位的 aws 密钥的年龄。taSec设置为 90 天前。

如果我使用一个elif语句并且只对两个键使用一个 if/then 语句,那么只有第一个判断一个键是否超过 90 天的 if 语句才会被执行。

我怎样才能这样写:

  1. 如果第一个密钥超过 90 天并发送电子邮件。
  2. 如果第二个密钥超过 90 天,则会发送一封电子邮件。
  3. 如果没有密钥超过 90 天,则会打印一条消息,说明没有密钥超过 90 天。
4

2 回答 2

2

希望,我正确理解了你的问题。请检查以下答案。

    key1=0
    key2=0

    if [ "$key1dtSec" -lt "$taSec" ]; then
        printf "%s created on %s\\nThis key is %s days old and needs to be replaced.\\nAn email will be sent." "$user_access_key1" "$key1_date_created." "$key1AgeDays"
        echo -e  "$template1" | /usr/bin/mail --append="Content-type: text/html" -s "AWS Key Rotation Needed for $user_name in $aws_key" "$email_address"
        echo; echo
        key1=1
       fi

     if [ "$key2dtSec" -lt "$taSec" ]; then
            printf "%s created on %s.\\nThis key is %s days old and needs to be replaced.\\nAn email will be sent." "$user_access_key2" "$key2_date_created"  "$key2AgeDays"
        echo -e  "$template2" | /usr/bin/mail --append="Content-type: text/html" -s "AWS Key Rotation Needed for $user_name in $aws_key" "$email_address"
        echo; echo
        key2=1
       fi

     if [  "$key1" -eq 0 && "$key2" -eq 0]; then 
        echo "no key is older than 90 days."
        fi
于 2018-07-16T14:49:51.603 回答
2

如果我理解正确,你的逻辑是这样的:

if condition1; then # first key
  action1 # send email
fi

if condition2; then # second key
  action2 # send different email
fi

if ! condition1 && ! condition2; then # neither key
  action3 # print something
fi

如果是这样,请替换condition1[ "$key1dtSec" -lt "$taSec" ]、相同的condition2,并在每个块中插入适当的操作。

于 2018-07-16T15:03:37.117 回答