Created
November 13, 2020 11:15
-
-
Save stuartleeks/84ed1560694769d404b8b7ec4f0084d5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
############################################################################################ | |
# | |
# Script used testing access to an Azure storage account with a private endpoint | |
# | |
############################################################################################ | |
# | |
# Argument parsing | |
# | |
function show_usage() { | |
echo "wait-for-dns.sh" | |
echo | |
echo "Wait for DNS name to be resolvable to an IP address" | |
echo | |
echo -e "\t--name\t(Required) The DNS name to query" | |
} | |
# Parameter defaults: | |
DNS_NAME="" | |
# Process switches: | |
while [[ $# -gt 0 ]] | |
do | |
case "$1" in | |
--name) | |
DNS_NAME=$2 | |
shift 2 | |
;; | |
*) | |
echo "Unexpected '$1'" | |
show_usage | |
exit 1 | |
;; | |
esac | |
done | |
echo $DNS_NAME | |
if [[ -z "$DNS_NAME" ]]; then | |
show_usage | |
exit 1 | |
fi | |
# TODO - pass this into the script for clarity! | |
PUBLIC_DNS_NAME=$(echo $DNS_NAME | sed "s/privatelink\.//") | |
STORAGE_ACCOUNT_NAME=$(echo $DNS_NAME | sed "s/\..*//") | |
# | |
# Lookup the IP address... | |
# | |
echo "Looking up IP address for $DNS_NAME" | |
echo "(using public name: $PUBLIC_DNS_NAME)" | |
echo "(using storage account name: $STORAGE_ACCOUNT_NAME)" | |
for i in {1..24}; do | |
echo "Attempt $i..." | |
PRIVATE_IP_ADDRESS=$(host -t A $DNS_NAME | awk '/has address/{print $NF; exit}'); | |
PUBLIC_IP_ADDRESS=$(host -t A $PUBLIC_DNS_NAME | awk '/has address/{print $NF; exit}'); | |
if [[ -n $PRIVATE_IP_ADDRESS ]]; then | |
echo "Got IP Address $PRIVATE_IP_ADDRESS for name $DNS_NAME" | |
echo "Got IP Address $PUBLIC_IP_ADDRESS for name $PUBLIC_DNS_NAME" | |
if [[ "$PRIVATE_IP_ADDRESS" == "$PUBLIC_IP_ADDRESS" ]]; then | |
echo "Addresses match - done." | |
echo "Test az container list..." | |
echo "'$STORAGE_ACCOUNT_NAME'" | |
AZ_RESULT=$(az storage container list --account-name $STORAGE_ACCOUNT_NAME > /dev/null; echo $?) | |
echo "result: '$AZ_RESULT'" | |
if [[ "$AZ_RESULT" == "0" ]]; then | |
echo "az cli test passed - done!" | |
exit 0 | |
else | |
echo "az cli test failed" | |
fi | |
else | |
echo "Addresses don't match" | |
fi | |
else | |
echo "Didn't get private IP address" | |
fi | |
sleep 5s | |
done | |
echo "Failed to get IP address for $DNS_NAME" | |
exit 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment