Instantly share code, notes, and snippets.

What would you like to do?
#!/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

This comment has been minimized.

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.


This comment has been minimized.

vcunat commented Jul 28, 2018

Thanks Graham.

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