适合小白的多途径获取ip归属地的shell脚本

这篇博客介绍了适合初学者的Shell脚本,通过geoip、IP38、ipaapi和ip2location等库,详细讲解如何获取IP地址的归属地信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

geoip库,IP38库,ipaapi库,ip2location库等等.... 

#!/bin/bash
ScriptDir=$(cd `dirname $0`; pwd)
Ip=$1

#百度api
baidu_ip(){
    Ipinfo=`${Curl} "http://opendata.baidu.com/api.php?query=${Ip}&resource_id=6006&format=json"|${Utf}`
    echo  "${Ipinfo}" |jq  .data[]|jq -r '["baidu",.origip,.location,"",""]|join("|")' >>/tmp/ip.info
}

#太平洋api
taipingyang_ip(){
    Ipinfo=`${Curl} "http://whois.pconline.com.cn/ipJson.jsp?ip=${Ip}&json=true"|${Utf}`
    echo  "${Ipinfo}" |jq -r '["pconline",.ip,.addr,"",""]|join("|")'>>/tmp/ip.info
}

##淘宝

##ip-api

ip_api_ip(){
    Ipinfo=`${Curl} "http://ip-api.com/json/${Ip}?lang=zh-CN"`
    echo  "${Ipinfo}"|jq -r '["ipapi_com",.query,.country,.city,.org]|join("|")' >>/tmp/ip.info
}
##ipapi.co
ipapi_co_ip(){
    Ipinfo=`${Curl} "https://ipapi.co/${Ip}/json/"|sed 's/^    "/"/g'|paste -s -d" "`
    echo  "${Ipinfo}" |jq -r '["ipapi_co",.ip,.country_name,.city,.org]|join("|")' >>/tmp/ip.info
}

##ipwhois
ipwhois_ip(){
    Ipinfo=`${Curl} "http://ipwhois.app/json/${Ip}"`
    echo  "${Ipinfo}"|jq -r '["ipwhois",.ip,.country,.city,.org]|join("|")' >>/tmp/ip.info
}
##freegeoip
#获取免费token
#https://app.ipbase.com/api-keys
ApiKey="xxx"
ipbase_ip(){
    Ipinfo=`${Curl} "https://api.ipbase.com/v2/info?ip=${Ip}" -H "apikey: ${ApiKey}" `
    echo  "${Ipinfo}"|jq .data|jq -r '["ipbase",.ip,.location.country.name,.location.city.name,.connection.organization]|join("|")' \
      >>/tmp/ip.info
}

##ip138
ip138(){
    #获取免费token
    Ipinfo=`${Curl}  "https://api.ip138.com/ipv4/?ip=${Ip}&datatype=jsonp&token=xxxx"`
    echo  "${Ipinfo}"|jq -r '["ip138",.ip,.data[0],.data[1],.data[4]]|join("|")' >>/tmp/ip.info
}

##geoiplookup
geoiplookup(){
    Tmpfile="/tmp/geoiplookup.info"
    ${Curl} "https://api.geoiplookup.net/?query=${Ip}" >${Tmpfile}
    Ipinfo="geoiplookup"
    for i in ip countryname city isp;do
      #apt-get install  libxml2-utils
      value=`xmllint --xpath "ip/results/result/${i}/text()"  ${Tmpfile} 2>/dev/null`
      Ipinfo="${Ipinfo}|${value}"
    done 
    echo  "${Ipinfo}" >>/tmp/ip.info
    
}
###ip2location
ip2location(){
  #获取免费token
  #https://lite.ip2location.com/database-download
  #ip2_download_token="xxx"
  #curl -o "https://www.ip2location.com/download/?token=ip2_download_token&file=${DATABASE_CODE}"
 
  #https://www.ip2location.io/dashboard
  api_key="xxx"
  Ipinfo=`${Curl}  "https://api.ip2location.io/?key=${api_key}&ip=${Ip}"`
  echo  "${Ipinfo}"|jq -r '["ip2Location","'${Ip}'",.country_name,.city_name,.as]|join("|")' >>/tmp/ip.info
}
ip2whois(){
  #获取免费token
  api_key="xxx"
  Whoisinfo=`${Curl}  "https://api.ip2whois.com/v2?key=${api_key}&domain=${Domain}"`
}


Curl="curl  -A 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)'  --connect-timeout 5 -s"
Utf="iconv -f gb18030 -t utf-8"
echo "查询源|IP|国家|城市|运营商" >/tmp/ip.info
geoiplookup
ip138
ip_api_ip
baidu_ip
taipingyang_ip
ipapi_co_ip
ipwhois_ip
ipbase_ip
ip2location
cat /tmp/ip.info|sed 's/| /|/g'|column -t -s '|'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值