Last updated
#!/bin/bash
aadTenant="chgeuerfte.onmicrosoft.com"
storageAccountName="chgeuer"
containerName="public"
filename="/mnt/c/Users/chgeuer/Desktop/dump.md"
resource="https://storage.azure.com/.default"
az_cli_client_id="04b07795-8ddb-461a-bbee-02f9e1bf7b46"
client_id="${az_cli_client_id}"
deviceResponse="$( curl \
--silent \
--request POST \
--url "https://login.microsoftonline.com/${aadTenant}/oauth2/v2.0/devicecode"\
--data-urlencode "client_id=${client_id}" \
--data-urlencode "scope=${resource}" \
)"
device_code="$(echo "${deviceResponse}" | jq -r ".device_code")"
sleep_duration="$(echo "${deviceResponse}" | jq -r ".interval")"
access_token=""
while [[ "${access_token}" == "" ]]
do
tokenResponse="$( curl \
--silent \
--request POST \
--url "https://login.microsoftonline.com/{aadTenant}/oauth2/v2.0/token" \
--data-urlencode "client_id=${client_id}" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:device_code" \
--data-urlencode "device_code=${device_code}" \
)"
if [[ "$( echo "${tokenResponse}" | jq -r ".error" )" == "authorization_pending" ]]; then
echo "$( echo "${deviceResponse}" | jq -r ".message" )"
sleep "${sleep_duration}"
else
access_token="$( echo "${tokenResponse}" | jq -r ".access_token" )"
echo "User authenticated"
fi
done
curl \
--request PUT \
--url "https://${storageAccountName}.blob.core.windows.net/${containerName}/$( basename "${filename}" )" \
--header "x-ms-version: 2019-12-12" \
--header "x-ms-blob-type: BlockBlob"\
--header "x-ms-blob-content-disposition: attachment; filename=\"$( basename "${filename}" )\"" \
--header "Content-Type: application/binary" \
--header "Authorization: Bearer ${access_token}" \
--header "Content-MD5: $( md5sum "${filename}" | awk '{ print $1 }' | xxd -r -p | base64 )" \
--upload-file "${filename}"
echo "File uploaded to https://${storageAccountName}.blob.core.windows.net/${containerName}/$( basename "${filename}" )"