For Windows (Powershell)
aws sts get-session-token --duration-seconds (Read-Host -Prompt "Session Duration") --serial-number (Read-Host -Prompt "Serial Number") --token-code (Read-Host -Prompt "MFA code") | ConvertFrom-Json | %{$_.Credentials} | %{@{aws_access_key_id=$_.AccessKeyId;aws_secret_access_key=$_.SecretAccessKey;aws_session_token=$_.SessionToken}} | ConvertTo-Json -Compress | %{$_ -replace "{","`n`n[profile-name]`n"} | %{$_ -replace "}",""} | %{$_ -replace ":"," = "} | %{$_ -replace '"',""} | %{$_ -replace",","`n"} | %{$_ -replace "profile-name", (Read-Host -Prompt "Profile Name")} | tee -Variable _ | Add-Content $HOME\.aws\credentials
For Linux (bash)
read -p "Session Duration: " duration; read -p "Serial Number: " serial; read -p "MFA Code: " mfa; aws sts get-session-token --duration-seconds $duration --serial-number $serial --token-code $mfa| jq '.Credentials' | jq -c '{aws_access_key_id: .AccessKeyId, aws_secret_access_key: .SecretAccessKey, aws_session_token: .SessionToken}' | sed -e 's/{/[default]\n/g' -e 's/}//g' -e 's/":"/ = /g' -e 's/",/\n/g' -e 's/"//g' | tee /tmp/credentials; mv /tmp/credentials ~/.aws/credentials