Skip to content

Instantly share code, notes, and snippets.

@recuraki
Last active June 22, 2020 11:05
Show Gist options
  • Save recuraki/cf5810bcd5acf10cc04f59550d90b469 to your computer and use it in GitHub Desktop.
Save recuraki/cf5810bcd5acf10cc04f59550d90b469 to your computer and use it in GitHub Desktop.
traceasnum
ZSHのscriptです..zshrcなどに書いてください.
■traceasnumの使い方
[kanai@www:33864]traceasnum www.ocn.ad.jp
traceroute to www.ocn.ad.jp (180.37.192.133), 20 hops max, 60 byte packets
1 202.133.x.x [AS9597] 1.442 ms
2 10.0.11.89 [*] 0.719 ms
(略)
9597 -> 2497 -> 4713 ★これがAS番号pathですを表示します
CPI-NET -> IIJ -> OCN ★as pasthのAS番号をwhois.cymru.comでlookupします
■aslookupの使い方: AS番号を入れます.AS<num>でも<num>だけでもいいです
尚,ASと入れると,fullname, numだけだと,spaceでsplitします
[kanai@www:33868]aslookup 4713
OCN
[kanai@www:33869]aslookup AS4713
OCN NTT Communications Corporation, JP
#######################################
function traceasnum(){
tf1=`mktemp /tmp/XXXXXX `
tf2=`mktemp /tmp/XXXXXX `
tf3=`mktemp /tmp/XXXXXX `
if test "`uname -s`" = "Darwin"; then
traceroute -m 20 -w1 -q 1 -n -A whois.radb.net $1 | tee $tf1
else
traceroute -m 20 -w1 -q 1 -n -A $1 | tee $tf1
fi
cat $tf1 | sed -e "s/^.*AS\([0-9]*\).*$/AS\\1/" | grep AS > $tf2
cat $tf2 | sed -e "s/AS//" | uniq | tr "\n" "-" | sed -e "s/-/ -> /g" -e "s/-> $//"
for i in `cat $tf2 | uniq`; do aslookup `echo $i | sed -e s/AS//` ; done >$tf3
echo ""
cat $tf3 | uniq | tr "\n" "#" | sed -e "s/#/ -> /g" -e "s/-> $//"
}
function aslookup(){
if test `echo $1 | grep "^[0-9]*$" | wc -l ` = "1"; then
whois -h whois.cymru.com AS$1 | grep -v "AS Name" | cut -d " " -f 1
else
whois -h whois.cymru.com $1 | grep -v "AS Name"
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment