Created
February 28, 2022 05:42
-
-
Save kratuvid/9856926513cb7690e6081ce56a5ef335 to your computer and use it in GitHub Desktop.
Find latency of Yggdrasil public peers
This file contains hidden or 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
#!/usr/bin/fish | |
# After running this script | |
# To sort by fastest 10: cat OUTPUT_FILE | sort -n | head -n10 | |
# To randomly output 10: cat OUTPUT_FILE | shuf -n10 | |
# Then to convert into a format for yggdrasil config | |
# ... (Anyone of the above commands) | awk '{print "\"" $2 "\""}' | |
set output (mktemp -u) | |
for p in (curl 'https://publicpeers.neilalexander.dev/publicnodes.json' | jq '.[]' | jq -r 'keys[]' | uniq | shuf) | |
set rm_proto (echo $p | sed -E 's/^(tcp|tls):\/\///') | |
set rm_port (echo $rm_proto | sed -E 's/:[0-9]+?$//') | |
set rm_bracket (echo $rm_port | sed -E 's/\[//' | sed -E 's/\]//') | |
set rm_key (echo $rm_bracket | sed -E 's/\?key=.*$//') | |
set rm_port2 (echo $rm_key | sed -E 's/:[0-9]+?$//') | |
if not echo $urls_done | grep -F "$rm_port2" &>/dev/null | |
echo INFO: Testing $rm_port2 1>&2 | |
set result (ping -qc4 $rm_port2 2>/dev/null) | |
if test $status -eq 0 | |
set latency (echo $result | grep -Po '\d+\.\d+/\d+\.\d+/\d+\.\d+/\d+\.\d+' | cut -d'/' -f2) | |
echo $latency $p | |
else | |
echo INFO: Can\'t reach $rm_port2 1>&2 | |
end | |
set -a urls_done "$rm_port2" | |
else | |
echo INFO: Skipping $rm_port2, already done 1>&2 | |
end | |
end | tee $output | |
echo INFO: Output written to $output 1>&2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment