diff options
author | Christian Segundo | 2023-10-12 14:23:49 +0200 |
---|---|---|
committer | Christian Segundo | 2023-10-12 14:23:49 +0200 |
commit | 449a6f57a36862a8ff27b2a3cee0922f4e4d949e (patch) | |
tree | c9d0d9f9d055e89a5046c75b613fc8bafea5715c /public/zsh/.usr/local/bin/aws-console | |
parent | 0b7186eac839b8690f8951aca4fc2657944ab3b6 (diff) | |
download | dotfiles-449a6f57a36862a8ff27b2a3cee0922f4e4d949e.tar.gz |
Add zsh
Diffstat (limited to 'public/zsh/.usr/local/bin/aws-console')
-rwxr-xr-x | public/zsh/.usr/local/bin/aws-console | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/public/zsh/.usr/local/bin/aws-console b/public/zsh/.usr/local/bin/aws-console new file mode 100755 index 0000000..77c2320 --- /dev/null +++ b/public/zsh/.usr/local/bin/aws-console @@ -0,0 +1,36 @@ +#!/bin/bash +set -eufo pipefail +export SHELLOPTS +IFS=$'\t\n' + +if [[ -z "${AWS_ACCESS_KEY_ID:-}" ]] || + [[ -z "${AWS_SECRET_ACCESS_KEY:-}" ]] || + [[ -z "${AWS_SESSION_TOKEN:-}" ]]; then + echo "AWS_ required variables not set" + exit 1 +fi + +command -v curl >/dev/null 2>&1 || { echo "curl is not installed!"; exit 1; } +command -v jq >/dev/null 2>&1 || { echo "jq is not installed!"; exit 1; } + +credentials='{"sessionId":"'"${AWS_ACCESS_KEY_ID}"'","sessionKey":"'"${AWS_SECRET_ACCESS_KEY}"'","sessionToken":"'"${AWS_SESSION_TOKEN}"'"}' + +uc="${credentials//'%'/%25}"; uc="${uc//'"'/%22}"; uc="${uc//','/%2C}" +uc="${uc//'/'/%2F}"; uc="${uc//':'/%3A}"; uc="${uc//'='/%3D}" +uc="${uc//'{'/%7B}"; uc="${uc//'}'/%7D}"; uc="${uc//'+'/%2B}" + +federation_url="https://signin.aws.amazon.com/federation" +federation_url="${federation_url}?Action=getSigninToken" +federation_url="${federation_url}&SessionDuration=3600" +federation_url="${federation_url}&Session=$(printf %s "$uc")" + +token=$(curl -s "${federation_url}" | jq -r '.SigninToken' 2>/dev/null) || + { echo "invalid or expired credentials"; exit 1; } + +console_url="https://signin.aws.amazon.com/federation" +console_url="${console_url}?Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F" +console_url="${console_url}&SigninToken=${token}" +console_url="${console_url}&Issuer=https%3A%2F%2Fexample.com" +console_url="${console_url}&Action=login" + +open "${console_url}" |