Skip to content

Instantly share code, notes, and snippets.

@yurynix
Last active February 9, 2021 17:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yurynix/e0e8e1075ef742e9084dc81013fb349f to your computer and use it in GitHub Desktop.
Save yurynix/e0e8e1075ef742e9084dc81013fb349f to your computer and use it in GitHub Desktop.
Reset DNS after GlobalProtect getting stuck
#!/bin/bash
scutil_primary_output=$(scutil << EOF
get State:/Network/Global/IPv4
d.show
EOF)
primary_interface=$(echo $scutil_primary_output | sed -n 's/.*PrimaryInterface : \([a-z0-9]*\).*/\1/p')
primary_service=$(echo $scutil_primary_output | sed -n 's/.*PrimaryService : \([A-Z0-9-]*\).*/\1/p')
#echo $primary_interface $primary_service
#exit;
#if=${1-en0}
default_servers=$( ipconfig getpacket $primary_interface | \
perl -ne'/domain_name_server.*: \{(.*)}/ && print join " ", split /,\s*/, $1' )
echo Interface: $primary_interface DNS: $default_servers
#first_if_scutil_dns_key_list_item=$(scutil << EOF
#list ".*/Service/.*/DNS"
#EOF)
#first_if_scutil_dns_key=$(echo $first_if_scutil_dns_key_list_item | sed 's/subKey \[0\] = \(.*\)/\1/')
first_if_scutil_dns_key="State:/Network/Service/$primary_service/DNS"
dns_records_in_scutil=$(scutil << EOF
get $first_if_scutil_dns_key
d.show
exit
EOF)
global_protect_dns_records_in_scutil=$(scutil << EOF
get State:/Network/Service/gpd.pan/DNS
d.show
EOF)
echo "$first_if_scutil_dns_key -> $dns_records_in_scutil"
echo "State:/Network/Service/gpd.pan/DNS -> $global_protect_dns_records_in_scutil"
sudo scutil << EOF
get $first_if_scutil_dns_key
d.remove ServerAddresses
d.add ServerAddresses * $default_servers
set $first_if_scutil_dns_key
remove State:/Network/Service/gpd.pan/DNS
remove State:/Network/Service/gpd.pan/IPv4
exit
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment