Skip to content

Instantly share code, notes, and snippets.

@hlx98007
Created December 20, 2019 19:27
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 hlx98007/86dae3acc23a79cbe7fa585216fa980f to your computer and use it in GitHub Desktop.
Save hlx98007/86dae3acc23a79cbe7fa585216fa980f to your computer and use it in GitHub Desktop.
一个可以在command line下查看归属地的工具,支持域名/IPv4/IPv6
#!/bin/bash
function valid_ipv6()
{
local regex='^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$'
local var="$1"
if [[ $var =~ $regex ]]; then
echo 0
else
echo 1
fi
}
function valid_ipv4()
{
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];
then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=0
fi
echo $stat
}
function valid_ip()
{
if [[ "$(valid_ipv4 $1)" -eq 0 || "$(valid_ipv6 $1)" -eq 0 ]]
then
echo 0
else
echo 1
fi
}
function lookup()
{
echo $1:
curl -sL "http://freeapi.ipip.net/$1" -A "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"
echo
}
# main
for i in $*;
do
if [[ "$(valid_ip $1)" -eq 0 ]]
then
ip="$i"
else
ipv4=`dig +short $i | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"`
ipv6=`dig +short AAAA $i`
fi
for p in $ip $ipv4 $ipv6
do
lookup $p
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment