Skip to content

Instantly share code, notes, and snippets.

Last active September 3, 2021 08:52
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save grahamc/df1bb806eb3552650d03eef7036a72ba to your computer and use it in GitHub Desktop.
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p bind.dnsutils -p traceroute -p curl
# impure: needs ping
function _e {
echo "> $@"
eval "$@" 2>&1 | sed -e "s/^/ /"
printf "Exit: %s\n\n\n" "$?"
function curl_test {
curl -w "
time_namelookup: %{time_namelookup}
time_connect: %{time_connect}
time_appconnect: %{time_appconnect}
time_pretransfer: %{time_pretransfer}
time_redirect: %{time_redirect}
time_starttransfer: %{time_starttransfer}
time_total: %{time_total}
" -v -o /dev/null "$@"
function ix {
url=$(cat | curl -F 'f:1=<-' 2> /dev/null)
echo "Pasted at: $url"
_e ping -c1
_e ping -4 -c1
_e ping -6 -c1
_e dig -t A
_e dig -t A
_e traceroute -4
_e traceroute -6
_e curl_test -4 ''
_e curl_test -6 ''
_e curl -I -4 ''
_e curl -I -4 ''
_e curl -I -4 ''
_e curl -I -6 ''
_e curl -I -6 ''
_e curl -I -6 ''
) | tee /dev/stderr | ix
Copy link

vcunat commented Jul 24, 2018

Updated the above script to reflect these changes, including EDIT1 -- Graham

Please, don't use dig -4. I think you meant dig -t A (which is the default, so you may well simply drop the -4).

dig -4 will attempt to use IPv4 to contact the DNS resolver, which leads to a very strange hang in my case, as I only have an IPv6 server in my /etc/resolv.conf::1.

EDIT1: changed in my fork:
I suppose ping might be also doubled to ping -4 and ping -6, but I don't know if that would be more useful for debugging the CDN.

Copy link

vcunat commented Jul 28, 2018

Thanks Graham.

Copy link

vcunat commented May 12, 2019

Now the scripts might need updating, at least the lines with most likely won't be useful anymore, though I don't really know what data is useful here.

Copy link

zimbatm commented Sep 3, 2021

There is a new version of this script that now lives over here:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment