Guest User

Untitled

a guest
Mar 25th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. SESSION_FILE=~/.aws/mfa_session
  4. PROFILE=${1:-$AWS_PROFILE}
  5. ARGS=''
  6.  
  7. if [ "${PROFILE:0:1}" = "-" ]; then
  8. echo "usage: $0 [-h] [profile]"
  9. exit 1
  10. fi
  11.  
  12. if [ -n "$PROFILE" ]; then
  13. echo "Using profile $PROFILE" >&2
  14. ARGS='--profile '"$PROFILE"
  15. fi
  16.  
  17. IDENTITY_JSON=$(aws $ARGS sts get-caller-identity)
  18. if [ $? != 0 ]; then
  19. if (echo "$IDENTITY_JSON" | grep -s "ExpiredToken"); then
  20. unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
  21. else
  22. exit 1
  23. fi
  24. fi
  25.  
  26. USER_JSON=$(aws $ARGS iam get-user)
  27.  
  28. ACCOUNT=$(echo "$IDENTITY_JSON" |grep "Account" |awk '{print $NF}' |sed -e 's/[",]*//g')
  29. IAMUSER=$(echo "$USER_JSON" |grep 'UserName' |awk '{print $NF}' |sed -e 's/[",]*//g')
  30.  
  31. MFA_ARN="arn:aws:iam::$ACCOUNT:mfa/$IAMUSER"
  32.  
  33. echo -n "Enter MFA token for $MFA_ARN: " >&2
  34. read MFA_TOKEN_CODE
  35. echo ""
  36.  
  37. SESSION_JSON=$(aws $ARGS sts get-session-token --serial-number "$MFA_ARN" --token-code "$MFA_TOKEN_CODE")
  38. if [ $? != 0 ]; then
  39. exit 1
  40. fi
  41.  
  42. AWS_ACCESS_KEY_ID=$(echo "$SESSION_JSON" |grep 'AccessKeyId' | awk '{print $NF}' |sed -e 's/[",]*//g')
  43.  
  44. if [ -z "$AWS_ACCESS_KEY_ID" ]; then
  45. echo "Error reading AccessKeyId"
  46. exit 1
  47. fi
  48.  
  49. AWS_SESSION_TOKEN="$(echo "$SESSION_JSON" |grep 'SessionToken' | awk '{print $NF}' |sed -e 's/["]*//g')"
  50. AWS_SECRET_ACCESS_KEY=$(echo "$SESSION_JSON" | grep 'SecretAccessKey' | awk '{print $NF}' |sed -e 's/[",]*//g')
  51.  
  52. echo -e "export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID\n"\
  53. "export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY\n"\
  54. "export AWS_SESSION_TOKEN=\"$AWS_SESSION_TOKEN\"\n" |tee $SESSION_FILE
  55.  
  56. echo "Run following command: "
  57. echo "source $SESSION_FILE"
Add Comment
Please, Sign In to add comment